專利名稱:基于http的認(rèn)證的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及網(wǎng)絡(luò)技術(shù),更具體而言,涉及使用HTTP來(lái)認(rèn)證聯(lián)網(wǎng)環(huán)境中的請(qǐng)求。
背景技術(shù):
計(jì)算機(jī)網(wǎng)絡(luò)遭受各種安全違背。當(dāng)用戶或計(jì)算機(jī)系統(tǒng)為了訪問(wèn)它不被授權(quán)訪問(wèn)的資源,或以別的方式避免被正確地與請(qǐng)求相關(guān)聯(lián)而虛假地標(biāo)識(shí)其本身時(shí),產(chǎn)生一種這樣的類型的違背。為有助于請(qǐng)求認(rèn)證,發(fā)往提供資源或服務(wù)的某一方(下文稱為“依賴方”)的對(duì)服務(wù)的請(qǐng)求以這樣的一種方式來(lái)包括請(qǐng)求方的身份,以使得依賴方可以驗(yàn)證該身份的真實(shí)性。請(qǐng)求認(rèn)證是驗(yàn)證請(qǐng)求的發(fā)送方的身份的過(guò)程。認(rèn)證提供每一方的標(biāo)識(shí)都是準(zhǔn)確的某種級(jí)別的安全性。請(qǐng)求方的身份形成由依賴方作出的訪問(wèn)控制決策的基礎(chǔ)。一種類型的請(qǐng)求認(rèn)證包括使用用戶名和口令。一種更強(qiáng)的類型的認(rèn)證涉及使用安全令牌。某些類型的安全令牌是由受信任的身份提供方所發(fā)出的。擁有安全令牌用于提供對(duì)于擁有方的身份證明。某些安全令牌嵌入了加密密鑰,以便實(shí)現(xiàn)更強(qiáng)的安全性。在一種類型的交互中,請(qǐng)求方從身份提供方獲取安全令牌。然后,請(qǐng)求方將安全令牌與服務(wù)請(qǐng)求一起呈現(xiàn)給提供資源或服務(wù)的某一方。資源提供方與身份提供方具有信任關(guān)系,該身份提供方充當(dāng)安全令牌的真實(shí)性的保證。代表性狀態(tài)傳輸(REST)是一種用于諸如萬(wàn)維網(wǎng)之類的分布式系統(tǒng)的軟件體系結(jié)構(gòu)的樣式。REST —般是指通過(guò)HTTP傳輸域特定的數(shù)據(jù)而無(wú)需諸如SOAP之類的額外的消息傳遞層的接口。HTTP提供包括符合“賦有REST性質(zhì)的”體系結(jié)構(gòu)的諸如GET(獲得)、 POST (傳遞),UPDATE (更新)和DELETE (刪除)之類的方法的接口。REST體系結(jié)構(gòu)的一個(gè)方面是對(duì)無(wú)狀態(tài)服務(wù)器的支持,其中,每一個(gè)消息都包括理解消息所需的信息,使得服務(wù)器不必記住消息之間的通信狀態(tài)。這有助于諸如服務(wù)器場(chǎng)中的服務(wù)器的縮放。在http://www. ietf. org/rfc/rfc2617. txt 處可用的 RFC 2617,描述了其中可以在HTTP頭部字段中傳遞用戶名和口令的BASIC (基本)認(rèn)證方案。RFC將此方案描述為“不被視為安全的用戶認(rèn)證方法,因?yàn)橛脩裘涂诹钜晕醇用艿男问酵ㄟ^(guò)網(wǎng)絡(luò)傳遞?!?RFC還描述了 “摘要訪問(wèn)認(rèn)證”方案,其中,使用用戶名、口令、現(xiàn)時(shí)值、HTTP方法,以及被請(qǐng)求的URI 的散列。RFC聲明,摘要方案“……受許多已知限制的困擾”。
發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容以便以簡(jiǎn)化的形式介紹將在以下具體實(shí)施方式
中進(jìn)一步描述的一些概念。本概述并不旨在標(biāo)識(shí)所要求保護(hù)主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護(hù)主題的范圍。簡(jiǎn)單來(lái)說(shuō),系統(tǒng)、方法以及組件操作以提供允許應(yīng)用認(rèn)證HTTP請(qǐng)求的HTTP消息認(rèn)證框架。該框架利用HTTP棧實(shí)現(xiàn),向應(yīng)用提供了一種實(shí)現(xiàn)各種請(qǐng)求認(rèn)證方案的機(jī)制。一示例實(shí)施例包括帶有一組HTTP頭部以及相關(guān)聯(lián)的語(yǔ)義的協(xié)議。描述了生成和處理HTTP消息的方法,以及請(qǐng)求方和依賴方之間的交互的各種變體。在一示例實(shí)施例中,請(qǐng)求方從服務(wù)器接收包括具有認(rèn)證說(shuō)明的一個(gè)或多個(gè)HTTP 頭部的服務(wù)器消息。作為響應(yīng),請(qǐng)求方可以生成符合認(rèn)證說(shuō)明的請(qǐng)求消息。在一個(gè)實(shí)施例中,請(qǐng)求消息包括消息正文、安全令牌(ST)、指定安全令牌的位置的HTTP頭部。請(qǐng)求消息可包括HTTP頭部,該HTTP頭部包括消息的摘要。安全令牌可以被置于一個(gè)或多個(gè)HTTP頭部中或消息正文中。如果安全令牌被置于多個(gè)HTTP頭部中,則它可以跨多個(gè)頭部被分段。如果安全令牌被置于消息正文中,則它可以是整個(gè)正文,HTML表單字段或在XML元素中。在一個(gè)實(shí)施例中,摘要包括消息正文和至少一個(gè)HTTP頭部或其某些部分的加密表示。在一個(gè)實(shí)施例中,請(qǐng)求方基于安全令牌的大小來(lái)確定安全令牌的位置。如果它太長(zhǎng)而難以容納在一個(gè)HTTP頭部中,則它可以跨多個(gè)頭部被分段。如果太長(zhǎng)而難以容納在多個(gè)HTTP頭部中,則它可以被置于消息正文中。在一個(gè)實(shí)施例中,接收請(qǐng)求消息的服務(wù)器可以基于令牌位置頭部說(shuō)明來(lái)提取安全令牌。安全令牌可以在一個(gè)HTTP頭部中,跨多個(gè)HTTP頭部被分段,或在消息正文中。在一個(gè)實(shí)施例中,服務(wù)器向請(qǐng)求方發(fā)送簽名說(shuō)明,而請(qǐng)求方將符合簽名說(shuō)明的數(shù)字簽名包括在安全頭部中。在一個(gè)實(shí)施例中,服務(wù)器用包括上下文令牌的消息對(duì)請(qǐng)求方作出響應(yīng)。在隨后的請(qǐng)求中,請(qǐng)求方可在HTTP頭部中包括上下文令牌,代替包括安全令牌。為了實(shí)現(xiàn)前述及相關(guān)目的,在這里結(jié)合以下描述及附圖來(lái)描述系統(tǒng)的某些說(shuō)明性方面。然而,這些方面僅指示了可采用本發(fā)明的原理的各種方法中的少數(shù)幾種,且本發(fā)明旨在包括所有這樣的方面及其等效方面。通過(guò)結(jié)合附圖考慮本發(fā)明的以下詳細(xì)描述,本發(fā)明的其它優(yōu)點(diǎn)以及新穎的特征將變得顯而易見(jiàn)。
參考以下附圖來(lái)描述本發(fā)明的非限制性且非窮盡性實(shí)施方式。在各附圖中,除非另外指明,否則在全部附圖中相同的附圖標(biāo)記指代相同的部分。為了幫助理解本發(fā)明,將參考以下與附圖相關(guān)聯(lián)地閱讀的具體實(shí)施方式
,附圖中圖1是其中可以實(shí)施各實(shí)施例的示例環(huán)境的框圖;圖2是示出了可以用于實(shí)現(xiàn)依賴方的計(jì)算系統(tǒng)的示例實(shí)施例的框圖;圖3示出了其中可以實(shí)施各實(shí)施例的示例環(huán)境;圖4是示出了使用HTTP頭部來(lái)認(rèn)證請(qǐng)求方的過(guò)程的示例實(shí)施例的流程圖;圖5是更詳細(xì)地示出了圖4的一些動(dòng)作的流程圖;圖6是示出了根據(jù)一示例實(shí)施例的將安全令牌插入到HTTP消息中的過(guò)程的流程圖;圖7是示出了根據(jù)一示例實(shí)施例的從HTTP消息中提取安全令牌的過(guò)程的流程圖; 以及圖8是示出了一示例實(shí)施例中的生成HTTP消息的過(guò)程的流程圖。
具體實(shí)施方式
下文中將參考附圖來(lái)更全面地描述本發(fā)明的各示例實(shí)施方式,附圖構(gòu)成實(shí)施方式的一部分且在其中作為示例示出了可在其中實(shí)踐本發(fā)明的各特定示例實(shí)施方式。然而,本發(fā)明可被實(shí)現(xiàn)為許多不同的形式并且不應(yīng)被解釋為被限于此處描述的各實(shí)施方式;相反, 提供這些實(shí)施方式以使得本公開(kāi)變得透徹和完整,并且將本發(fā)明的范圍完全傳達(dá)給本領(lǐng)域技術(shù)人員。特別地,本發(fā)明可被實(shí)現(xiàn)為方法或設(shè)備。因此,本發(fā)明可采用完全硬件實(shí)施方式、 完全軟件實(shí)施方式或者結(jié)合軟件和硬件方面實(shí)施方式的形式。因此,以下詳細(xì)描述并非是局限性的。貫穿說(shuō)明書(shū)和權(quán)利要求書(shū),下列術(shù)語(yǔ)采用此處顯式相關(guān)聯(lián)的含義,除非該上下文在其他地方另有清楚指示。如此處所使用的,短語(yǔ)“在一個(gè)實(shí)施方式中”盡管它可以但不一定指前一實(shí)施方式。此外,如此處所使用的,短語(yǔ)“在另一個(gè)實(shí)施方式中”盡管它可以但不一定指一不同的實(shí)施方式。因此,可以容易地組合本發(fā)明的各實(shí)施方式而不背離本發(fā)明的范圍或精神。類似地,如此處所使用的,短語(yǔ)“在一個(gè)實(shí)現(xiàn)中”盡管它可以但不一定指相同的實(shí)現(xiàn),并且可以組合各種實(shí)現(xiàn)的技術(shù)。另外,如此處所使用的,術(shù)語(yǔ)“或”是包括性“或”運(yùn)算符,并且等價(jià)于術(shù)語(yǔ)“和/ 或”,除非上下文清楚地另外指明。術(shù)語(yǔ)“基于”并非窮盡性的并且允許基于未描述的其他因素,除非上下文清楚地另外指明。另外,在本說(shuō)明書(shū)全文中,“一”、“一種”和“所述”的含義包括復(fù)數(shù)引用?!霸?.....中”的含義包括“在......中”和“在......上”。如此處所使用的,術(shù)語(yǔ)“認(rèn)證”指的是確認(rèn)事實(shí)或聲明在可以接受的肯定度內(nèi)是真實(shí)的。認(rèn)證用戶或用戶的身份適用于確認(rèn)所聲明的用戶的身份是充分且準(zhǔn)確的。認(rèn)證來(lái)自用戶的請(qǐng)求可包括確認(rèn)包括與請(qǐng)求一起包括的身份信息是準(zhǔn)確的,請(qǐng)求是所標(biāo)識(shí)的用戶始發(fā)的或其授權(quán)的,請(qǐng)求沒(méi)有被不適當(dāng)?shù)匦薷?,或者?qǐng)求中的其他信息是準(zhǔn)確的。認(rèn)證具有相關(guān)聯(lián)的肯定度,從而允許存在信息已經(jīng)被認(rèn)證但可能不準(zhǔn)確的情況。此處所描述的組件可以從其上具有數(shù)據(jù)結(jié)構(gòu)的各種計(jì)算機(jī)可讀介質(zhì)來(lái)執(zhí)行。組件可通過(guò)本地或遠(yuǎn)程過(guò)程諸如按照具有一或多個(gè)數(shù)據(jù)分組(例如,來(lái)自一個(gè)通過(guò)信號(hào)與本地系統(tǒng)、分布式系統(tǒng)中的另一組件交互或跨諸如因特網(wǎng)的網(wǎng)絡(luò)與其它系統(tǒng)交互的組件的數(shù)據(jù))的信號(hào)來(lái)通信。例如,根據(jù)本發(fā)明的各實(shí)施方式,軟件組件可被存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上,包括但不限于專用集成電路(ASIC)、緊致盤(pán)(⑶)、數(shù)字多功能盤(pán)(DVD)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、軟盤(pán)、硬盤(pán)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、閃存或記憶棒。如此處所用的術(shù)語(yǔ)“計(jì)算機(jī)可讀介質(zhì)”既包括存儲(chǔ)介質(zhì)又包括通信介質(zhì)。通信介質(zhì)一般用諸如載波或其他傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來(lái)體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、 程序模塊或其他數(shù)據(jù),并且包括任何信息傳遞介質(zhì)。作為示例而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)和直接線連接等有線介質(zhì),以及諸如聲學(xué)、無(wú)線電、紅外線和其他無(wú)線介質(zhì)等無(wú)線介質(zhì)。圖1是其中可以實(shí)施各實(shí)施例的環(huán)境100的框圖。圖1提供了對(duì)示例環(huán)境的基本理解,盡管可以使用許多配置,且許多細(xì)節(jié)未在圖1中示出。如圖1所示,示例環(huán)境100包括請(qǐng)求方102。請(qǐng)求方102可以是向遠(yuǎn)程服務(wù)提供商請(qǐng)求資源或服務(wù)的客戶機(jī)計(jì)算設(shè)備、進(jìn)程或任何組件。在示例實(shí)施例中,請(qǐng)求方102包括HTTP棧104。HTTP??梢愿鶕?jù)HTTP標(biāo)準(zhǔn)并以及此處所描述的至少一些機(jī)制來(lái)接收、處理、生成或發(fā)送超文本協(xié)議(HTTP)消息。
示例環(huán)境100包括依賴方106。依賴方106可以是計(jì)算設(shè)備、服務(wù)器或包括多個(gè)服務(wù)器的服務(wù)器場(chǎng)。圖2示出了依賴方106的示例實(shí)現(xiàn)。在所示示例實(shí)施例中,依賴方包括HTTP棧108。HTTP棧108執(zhí)行如對(duì)于HTTP棧 104所描述的動(dòng)作,盡管HTTP棧108和HTTP堆棧104的實(shí)現(xiàn)可以不同,并且由各自所提供的功能也會(huì)不同。在一個(gè)實(shí)施例中,請(qǐng)求方102向依賴方106發(fā)送一個(gè)或多個(gè)請(qǐng)求。請(qǐng)求可包括某一類型的標(biāo)識(shí)信息。請(qǐng)求可以是對(duì)資源或服務(wù)的請(qǐng)求。如此處所使用的,對(duì)服務(wù)的請(qǐng)求被視為對(duì)資源的請(qǐng)求。依賴方106可以處理該請(qǐng)求,并確定該請(qǐng)求是否包括充分地認(rèn)證請(qǐng)求方102的請(qǐng)求或用戶的信息。信息可以采用特定的格式,并被稱為安全憑證。如果安全憑證沒(méi)有被包括或不充分,則依賴方106可以拒絕該請(qǐng)求并指示請(qǐng)求方102提供充分的安全憑證。此處更詳細(xì)地討論此過(guò)程。示例環(huán)境100包括身份提供方110。身份提供方可以是向請(qǐng)求方102發(fā)出安全憑證的網(wǎng)絡(luò)實(shí)體。安全憑證可以表示關(guān)于可以被依賴方106信任的請(qǐng)求方102的聲明。由此, 身份提供方110被視為是被依賴方106信任的一方。在一個(gè)實(shí)施例中,安全憑證包括安全令牌(ST),而身份提供方110包括提供安全令牌的安全令牌服務(wù)(STS)。一種類型的安全令牌包括表示關(guān)于諸如請(qǐng)求方102的用戶之類的實(shí)體的一個(gè)或多個(gè)聲明的集合的數(shù)據(jù)。聲明可以被視為與聲明方相關(guān)聯(lián)的信息是準(zhǔn)確的斷言。這可包括, 例如,名稱、標(biāo)識(shí)符、鍵、組成員、特權(quán)、能力等等。這種類型的安全令牌此處被稱為“直接安全令牌”。第二種類型的安全令牌包括對(duì)直接安全令牌的引用,該引用標(biāo)識(shí)或允許對(duì)直接安全令牌的訪問(wèn)。這種類型的對(duì)直接安全令牌的引用此處被稱為間接安全令牌。統(tǒng)一資源標(biāo)識(shí)符(URI)是間接安全令牌的示例,如果它引用直接安全令牌的話。如此處所使用的,術(shù)語(yǔ) “安全令牌”可以指直接安全令牌或間接安全令牌,除非上下文明確地指示一種特定類型。請(qǐng)求方102可以通過(guò)網(wǎng)絡(luò)120與依賴方106或身份提供方110進(jìn)行通信。網(wǎng)絡(luò)120 可包括局域網(wǎng)、廣域網(wǎng)或其組合。在一個(gè)實(shí)施例中,網(wǎng)絡(luò)120包括因特網(wǎng),因特網(wǎng)是網(wǎng)絡(luò)的網(wǎng)絡(luò)。網(wǎng)絡(luò)120可包括有線通信機(jī)制、無(wú)線通信機(jī)制或其組合。請(qǐng)求方102、依賴方106或身份提供方110彼此之間或與其他計(jì)算設(shè)備之間的通信可以使用各種有線或無(wú)線通信協(xié)議中的一個(gè)或多個(gè),如 IP、TCP/IP、UDP、HTTP、SSL、TLS, FTP、SMTP、WAP、藍(lán)牙或 WLAN。圖1只是合適的環(huán)境的示例,并不旨在就本發(fā)明的使用范圍或功能提出任何限制。由此,在不偏離本發(fā)明的范圍或精神的情況下,可以使用各種系統(tǒng)配置。例如,依賴方 106或身份提供方110的功能中的任何一個(gè)功能可以被合并到一個(gè)或多個(gè)計(jì)算設(shè)備中,以各種方式在多個(gè)計(jì)算設(shè)備之間分布或復(fù)制。類似地,可以以各種方式在一個(gè)或多個(gè)計(jì)算設(shè)備之間配置請(qǐng)求方102的功能。在一個(gè)實(shí)施例中,可以將依賴方106和身份提供方110的功能組合在一個(gè)或多個(gè)計(jì)算設(shè)備中。在一個(gè)實(shí)施例中,由一個(gè)或多個(gè)計(jì)算設(shè)備來(lái)實(shí)現(xiàn)請(qǐng)求方102、依賴方106以及身份提供方110中的每一個(gè)。計(jì)算設(shè)備可以是專用或通用計(jì)算設(shè)備。簡(jiǎn)而言之,可以使用的計(jì)算設(shè)備的一個(gè)實(shí)施例包括一個(gè)或多個(gè)處理單元、存儲(chǔ)器、顯示器、鍵盤(pán)以及定點(diǎn)設(shè)備以及通信接口。一個(gè)或多個(gè)處理單元可包括一個(gè)或多個(gè)多核處理器。示例計(jì)算設(shè)備包括大型機(jī)、 服務(wù)器、刀片式服務(wù)器、個(gè)人計(jì)算機(jī)、便攜式計(jì)算機(jī)、通信設(shè)備、消費(fèi)電子產(chǎn)品等等。計(jì)算設(shè)
8備可包括通用或?qū)S玫牟僮飨到y(tǒng)。由華盛頓州雷德蒙市微軟公司出品的Windows 操作系統(tǒng)系列是可以在開(kāi)發(fā)系統(tǒng)的計(jì)算設(shè)備上執(zhí)行的操作系統(tǒng)的示例。圖2是示出了可以被用來(lái)實(shí)現(xiàn)依賴方106或其一些部分的計(jì)算系統(tǒng)200的示例實(shí)施例的框圖。在各實(shí)施例中,可以利用以各種方式配置的一個(gè)或多個(gè)服務(wù)器或其他計(jì)算設(shè)備來(lái)實(shí)現(xiàn)系統(tǒng)200。如圖所示,計(jì)算系統(tǒng)200包括執(zhí)行動(dòng)作以執(zhí)行各種計(jì)算機(jī)程序的指令的一個(gè)或多個(gè)處理器202。在一種配置中,處理器202可包括一個(gè)或多個(gè)中央處理單元、一個(gè)或多個(gè)處理器核、ASIC或其他硬件處理組件和相關(guān)的程序邏輯。在所示出的實(shí)施例中,計(jì)算系統(tǒng)200 包括可以包括易失性或非易失性存儲(chǔ)器的存儲(chǔ)器204。計(jì)算系統(tǒng)200也可以包括執(zhí)行跨網(wǎng)絡(luò)將消息或信號(hào)發(fā)送到遠(yuǎn)程設(shè)備或接收消息或信號(hào)的動(dòng)作的網(wǎng)絡(luò)通信單元。在所示出的實(shí)施例中,計(jì)算系統(tǒng)200包括存儲(chǔ)在存儲(chǔ)器204內(nèi)的HTTP棧206和一個(gè)或多個(gè)應(yīng)用210。HTTP棧206可以是HTTP棧108(圖1)。在一個(gè)實(shí)施例中,HTTP棧206 包括執(zhí)行認(rèn)證接收到的請(qǐng)求的動(dòng)作的認(rèn)證模塊208。在某些實(shí)施例中,HTTP棧206不包括認(rèn)證模塊208。在一個(gè)實(shí)施例中,計(jì)算系統(tǒng)200包括應(yīng)用210。應(yīng)用210可以執(zhí)行各種服務(wù),提供對(duì)一個(gè)或多個(gè)資源的訪問(wèn),或響應(yīng)于請(qǐng)求而執(zhí)行其他動(dòng)作。應(yīng)用210的示例包括Web服務(wù)器、FTP服務(wù)器以及郵件服務(wù)器。應(yīng)用210可包括應(yīng)用認(rèn)證模塊212。應(yīng)用認(rèn)證模塊212執(zhí)行認(rèn)證接收到的請(qǐng)求的動(dòng)作,盡管不一定與認(rèn)證模塊208相同的動(dòng)作。圖3示出了其中可以實(shí)施各實(shí)施例的示例環(huán)境300。環(huán)境300可以結(jié)合圖1的環(huán)境100或其變體而存在。如圖所示,環(huán)境300包括請(qǐng)求方102、依賴方106以及身份提供方 110。請(qǐng)求方102與依賴方106和身份提供方110中的每一個(gè)進(jìn)行直接或間接通信。通信可以是直接的或通過(guò)諸如網(wǎng)絡(luò)120(圖1)之類的網(wǎng)絡(luò)。圖3中的箭頭表示在所示出的組件之間交換的消息。此外,在一個(gè)實(shí)施例中,消息的參考編號(hào)對(duì)應(yīng)于附圖中從頂部到底部的方向的時(shí)間順序,盡管在各實(shí)施例中,順序不同。在一個(gè)實(shí)施例中,所示出的消息中的每一個(gè)都是HTTP消息,在下文中更詳細(xì)地描述其內(nèi)容。結(jié)合圖4來(lái)討論圖3的消息。圖4是示出了使用HTTP頭部來(lái)認(rèn)證請(qǐng)求方的過(guò)程 400的示例實(shí)施例的流程圖。過(guò)程400的一些動(dòng)作由請(qǐng)求方102執(zhí)行(圖1),并在圖4的左列中在標(biāo)題“請(qǐng)求方”下被表示。過(guò)程400的其他動(dòng)作由依賴方106執(zhí)行,并在圖4的右列中在標(biāo)題“依賴方”下被表示。過(guò)程400的一些動(dòng)作涉及發(fā)送或接收?qǐng)D3中所示出的消息。下面的討論引用了圖3的消息。過(guò)程400的所示出的部分可以在框402被發(fā)起,在這里,請(qǐng)求方102向依賴方106 發(fā)送請(qǐng)求消息(請(qǐng)求消息310)。在一個(gè)實(shí)施例中,請(qǐng)求消息310是對(duì)資源的請(qǐng)求,通過(guò)認(rèn)證過(guò)程保護(hù)了對(duì)該資源的訪問(wèn)。該過(guò)程可以從框402流向框404,在這里,依賴方106接收請(qǐng)求消息310。過(guò)程400可以從框404流向判斷框406,在這里,就請(qǐng)求是否被充分地認(rèn)證作出確定。在一個(gè)實(shí)施例中,這包括確定請(qǐng)求是否包括有效并且充分的安全憑證。對(duì)充分性的確定可以基于依賴方106的配置。在一個(gè)實(shí)施例中,框406的確定包括確定請(qǐng)求是否包括安全令牌并遵循已配置的方案。確定還可基于被請(qǐng)求的資源的價(jià)值,請(qǐng)求方的位置或配置,一天中的時(shí)間,或其他因素。此處討論框406的動(dòng)作的進(jìn)一步的細(xì)節(jié)。
如果在判斷框406確定請(qǐng)求被充分地認(rèn)證,則過(guò)程可以流向框408,在這里,依賴方106可以向請(qǐng)求方102發(fā)送響應(yīng)消息320。在一些配置中,響應(yīng)消息320可以指示成功的響應(yīng)。它可包括資源,資源可用的指示,已經(jīng)提供或?qū)⑻峁┑姆?wù)的指示,有助于獲取資源的數(shù)據(jù),或根據(jù)請(qǐng)求的另一個(gè)響應(yīng)。在一些配置中,響應(yīng)消息320可以指示由于除認(rèn)證以外的理由而被拒絕的請(qǐng)求。例如,請(qǐng)求可以被正常認(rèn)證,但是,用戶可能不被授權(quán)訪問(wèn)資源。 資源可以由于其他理由而不可用。過(guò)程可以從框408流向程序出口或返回到進(jìn)行調(diào)用的程序。如果在判斷框406確定沒(méi)有與請(qǐng)求消息一起包括充分的安全憑證,則過(guò)程400可以流向框410,在這里,可以生成HTTP錯(cuò)誤響應(yīng)消息,并將其從依賴方106發(fā)送到請(qǐng)求方 102。在一個(gè)實(shí)施例中,HTTP錯(cuò)誤響應(yīng)消息是HTTP “未經(jīng)授權(quán)”消息312。這可以是包括 "ffffff-Authenticate (WWW-真實(shí)),,響應(yīng)頭部的HTTP 401錯(cuò)誤消息。消息可包括指示所要求的安全憑證的說(shuō)明的數(shù)據(jù),或當(dāng)發(fā)送一個(gè)或多個(gè)安全憑證時(shí)要遵循的協(xié)議。協(xié)議被稱為 “方案”,在使用一個(gè)或多個(gè)HTTP頭部的方案的特定情況下,它被稱為“HTTP方案”。過(guò)程400可以從框410流向框412,在這里,請(qǐng)求方102接收“未經(jīng)授權(quán)”消息312。 盡管在某些環(huán)境中請(qǐng)求方102可以擁有充分的安全憑證或能夠生成它們,在所示出的環(huán)境中,響應(yīng)于接收到“未經(jīng)授權(quán)”消息312,過(guò)程流向框414,在這里,請(qǐng)求方102可以試圖獲取充分的安全憑證,符合由依賴方106在“未經(jīng)授權(quán)”消息312中所標(biāo)識(shí)的方案。在一個(gè)實(shí)施例中,在框414,請(qǐng)求方102可以向諸如身份提供方110之類的受信任的身份提供方請(qǐng)求安全令牌。請(qǐng)求可以采用發(fā)送到身份提供方110的請(qǐng)求ST消息314的形式。請(qǐng)求ST消息 314可包括安全憑證或可以被用來(lái)認(rèn)證請(qǐng)求方102的用戶的其他數(shù)據(jù)。在某些環(huán)境中,響應(yīng)于接收到請(qǐng)求ST消息314,身份提供方110可以確定請(qǐng)求方 102沒(méi)有提供充分的標(biāo)識(shí)數(shù)據(jù),或者以別的方式不被授權(quán)接收安全令牌。此動(dòng)作沒(méi)有在圖4 中示出。示例過(guò)程400示出了其中身份提供方110向請(qǐng)求方102返回被請(qǐng)求的安全令牌的環(huán)境。如圖所示,過(guò)程400流向框416,在這里,請(qǐng)求方102接收包括安全令牌325的ST響應(yīng)消息316。在某些實(shí)施例中,安全令牌包括一個(gè)或多個(gè)加密密鑰。承載密鑰的安全令牌的示例包括帶有會(huì)話密鑰的Kerberos v5權(quán)證和帶有密鑰持有人對(duì)象確認(rèn)的SAML vl. 1或 v2. 0令牌。在一個(gè)實(shí)施例中,請(qǐng)求ST消息314和ST響應(yīng)消息316符合此處所描述的至少一些消息協(xié)議。例如,請(qǐng)求方可以向ST請(qǐng)求消息314插入如此處所描述的令牌位置頭部和令牌頭部。消息還可以包括摘要頭部和數(shù)字簽名。此處提供這樣的消息的示例。響應(yīng)于在框416接收到安全令牌,過(guò)程可以流向框418,在這里,請(qǐng)求方102可以生成請(qǐng)求消息318并將其發(fā)送到依賴方106。請(qǐng)求消息318可包括類似于請(qǐng)求消息310的請(qǐng)求的請(qǐng)求。然而,請(qǐng)求消息318可包括從身份提供方110接收到的安全令牌325。在一個(gè)實(shí)施例中,請(qǐng)求消息318類似于帶有額外的HTTP頭部的提供認(rèn)證數(shù)據(jù)的請(qǐng)求消息310。該過(guò)程可以從框418流向框404,在這里,依賴方106接收請(qǐng)求消息318。在框404,響應(yīng)于接收到請(qǐng)求消息318,依賴方106可以處理該消息,以確定請(qǐng)求是否包括充分的標(biāo)識(shí)憑證并符合已配置的認(rèn)證方案,如參考請(qǐng)求消息310所討論的。如果標(biāo)識(shí)憑證被視為是不充分的,則過(guò)程可以流向框410,在這里,回復(fù)方可以發(fā)送另一個(gè)未經(jīng)授權(quán)的消息312。如果在判斷框406確定安全憑證是充分的,則過(guò)程可以流向框408,在這里,
10如上文所討論的,發(fā)送響應(yīng)。圖3示出了消息的示例序列,其中,第一請(qǐng)求消息是不充分的, 而第二請(qǐng)求消息是充分的。示例消息序列示出了下面的消息序列。請(qǐng)求消息310。未經(jīng)授權(quán)的消息312。請(qǐng)求ST消息314。ST響應(yīng)消息316。請(qǐng)求消息318 (帶有安全令牌)。響應(yīng)消息320。在一個(gè)實(shí)施例中,環(huán)境可以得到如下的消息序列。請(qǐng)求ST消息314。ST響應(yīng)消息316。請(qǐng)求消息318 (帶有安全令牌)。響應(yīng)消息320。在上面的示例序列中,請(qǐng)求方102可以在框414發(fā)送請(qǐng)求ST消息314 ;在框416, 請(qǐng)求方102可以接收安全ST響應(yīng)消息316 ;在響應(yīng)中,在框418,請(qǐng)求方102可以生成和發(fā)送請(qǐng)求消息318。然后,依賴方106可以在框408發(fā)送響應(yīng)消息320。此序列可以,例如,在下列環(huán)境中產(chǎn)生其中請(qǐng)求方102響應(yīng)于前面的請(qǐng)求先前已經(jīng)接收到未經(jīng)授權(quán)的消息312 或以別的方式被配置成獲取適當(dāng)?shù)陌踩钆撇⑵湓谡?qǐng)求消息中與適當(dāng)方案一起發(fā)送??梢援a(chǎn)生過(guò)程400的變體,包括按其他順序發(fā)送所示出的消息,或其一部分。圖5是示出了圖4的判斷框406的示例實(shí)現(xiàn)的流程圖。判斷框406的一些動(dòng)作可以由依賴方106(圖1)的HTTP棧206(圖2)來(lái)執(zhí)行,并在圖5的左列中在標(biāo)題“HTTP?!?下被表示。判斷框406的其他動(dòng)作可以由應(yīng)用210的認(rèn)證模塊212來(lái)執(zhí)行,并在右列中在標(biāo)題“應(yīng)用”下被表示。出于上下文,圖5用虛線包括圖4的框404、410以及408 ;盡管在所示出的實(shí)施例中它們沒(méi)有被包括在判斷框406的動(dòng)作中。圖5中所示出的判斷框406的動(dòng)作此處被稱為過(guò)程500。如圖5所示,處理可以從框404流向框504,在這里,可以從HTTP消息的HTTP頭部中提取認(rèn)證方案的說(shuō)明。請(qǐng)求消息318是這樣的HTTP消息的一個(gè)示例。在一個(gè)實(shí)施例中, 說(shuō)明可以是在依賴方106中配置的任何方案名稱。過(guò)程500可以從框504流向判斷框506,在這里,就HTTP棧206是否配置有對(duì)應(yīng)于所指定的認(rèn)證方案的處理程序作出確定。此處所描述的框架允許過(guò)程500在依賴方中利用對(duì)應(yīng)于所指定的認(rèn)證方案的HTTP棧處理程序或利用不是如此配置的HTTP棧來(lái)執(zhí)行。如果在判斷框506確定HTTP棧206被配置有對(duì)應(yīng)的處理程序,則該過(guò)程可以流向框508,在這里,可以從接收到的消息中提取安全令牌。如此處所描述的,此處所描述的框架允許安全令牌被置于一個(gè)或多個(gè)HTTP頭部中或請(qǐng)求消息的正文中???06的動(dòng)作包括確定安全令牌的位置,提取安全令牌,以及如果安全令牌有一個(gè)以上的段,則組裝這些段。圖 7更詳細(xì)地示出框508的一些動(dòng)作。過(guò)程可以從框508流向框510,在這里,可以執(zhí)行對(duì)安全令牌的驗(yàn)證。在一個(gè)實(shí)施例中,框510的動(dòng)作包括驗(yàn)證安全令牌正常地與它在其中被接收到的請(qǐng)求相關(guān)聯(lián)。在一個(gè)實(shí)施例中,消息可包括請(qǐng)求消息的摘要,或其一部分。這可包括消息正文、安全令牌,以及HTTP頭部的選定部分。摘要可包括消息的指定的部分的散列???10的動(dòng)作可包括驗(yàn)證摘要準(zhǔn)確地表示消息正文以及HTTP頭部的選定部分。驗(yàn)證安全令牌可包括生成摘要并驗(yàn)證它匹配與安全令牌一起包括的摘要。在一個(gè)實(shí)施例中,框510的動(dòng)作包括驗(yàn)證涵蓋了至少摘要的數(shù)字簽名。簽名可以使用嵌入在安全令牌中的加密密鑰。這用于將安全令牌與消息強(qiáng)相關(guān)聯(lián)。對(duì)安全令牌的驗(yàn)證可包括驗(yàn)證安全令牌是由諸如圖1的身份提供方110之類的受信任的身份提供方所發(fā)出的。框510的動(dòng)作可包括基于依賴方的配置來(lái)驗(yàn)證由安全令牌表示的任何聲明是充分的,或包括如配置的對(duì)安全令牌數(shù)據(jù)的額外的驗(yàn)證。這可包括可被配置的幾乎任何類型的驗(yàn)證。該過(guò)程可以流向判斷框512,在這里,就安全令牌以及相關(guān)聯(lián)的數(shù)據(jù)是否被正確地驗(yàn)證作出確定。如果驗(yàn)證失敗,則過(guò)程可以流向過(guò)程400的框410,并如此處所描述的繼續(xù)。 如果驗(yàn)證成功,則過(guò)程可以流向框514,在這里,向應(yīng)用210傳遞請(qǐng)求消息或其一些部分。應(yīng)用210可以以各種方式處理消息,包括過(guò)程400的框408的動(dòng)作,在這里,它如此處所描述的繼續(xù)。在一個(gè)實(shí)施例中,HTTP??梢圆槐慌渲贸筛鶕?jù)指定的認(rèn)證方案來(lái)提取和驗(yàn)證安全令牌。在判斷框506,如果確定HTTP棧沒(méi)有被配置有用于指定的認(rèn)證方案的處理程序,則過(guò)程可以流向框526,在這里,向應(yīng)用210傳遞請(qǐng)求消息,或其一些部分。這給應(yīng)用程序210 提供了一種用于執(zhí)行對(duì)接收到的消息的認(rèn)證的機(jī)制。該過(guò)程可以從框516流向框518,在這里,可以從接收到的消息中提取安全令牌。 在一個(gè)實(shí)施例中,應(yīng)用210可以被配置成執(zhí)行相對(duì)于對(duì)請(qǐng)求消息的認(rèn)證的HTTP棧206的至少一些動(dòng)作。具體而言,框518和520以及判斷框522的動(dòng)作可分別包括對(duì)應(yīng)的框508、510 以及512的動(dòng)作,如此處所描述的。由此,過(guò)程可以從框518流向框520到框522,然后,到框410或框408,如上文對(duì)于對(duì)應(yīng)的框所描述的。在一個(gè)實(shí)施例中,在判斷框522處的失敗的認(rèn)證可以導(dǎo)致注入HTTP錯(cuò)誤,如此處所描述的。此處所描述的至少一些機(jī)制允許依賴方106具有關(guān)于接收到的請(qǐng)求消息的各種配置。在一種配置中,HTTP棧206的認(rèn)證模塊208可以被配置成對(duì)接收到的請(qǐng)求的執(zhí)行認(rèn)證。在一種配置中,認(rèn)證模塊208可以不如此配置,并向應(yīng)用210傳遞消息,在這里,應(yīng)用認(rèn)證模塊212執(zhí)行認(rèn)證。在一種配置中,認(rèn)證模塊208可以執(zhí)行認(rèn)證動(dòng)作的一部分,而認(rèn)證模塊212可以執(zhí)行另一部分。由此,應(yīng)用210可以被安裝在各種計(jì)算系統(tǒng)200上,并可以用于各種HTTP棧配置。圖6是示出了一示例實(shí)施例中的將安全令牌插入到HTTP消息中的過(guò)程600的流程圖。過(guò)程600示出了如上文所討論的框418的至少一些動(dòng)作。過(guò)程600的所示出的部分可以在框602被發(fā)起,在這里,可以確定安全令牌的一個(gè)或多個(gè)位置。在一種實(shí)現(xiàn)中,安全令牌可以被配置成被置于一個(gè)或多個(gè)HTTP頭部中或消息正文中的三個(gè)位置中的一個(gè)位置中。在判斷框604,過(guò)程可以分叉到四個(gè)框中的一個(gè)框中,以處理相應(yīng)的位置選項(xiàng)。一個(gè)這樣的位置是在一個(gè)或多個(gè)HTTP頭部中。如果確定這就是位置所在,則過(guò)程可以流向判斷框 606,在這里,就是否要分段安全令牌作出確定。在一個(gè)實(shí)施例中,基于安全令牌的大小來(lái)作出此確定。如果在判斷框606中確定可以將安全令牌插入到一個(gè)頭部中,則過(guò)程可以流向框608,在這里,安全令牌被插入到一個(gè)HTTP頭部中。過(guò)程可以流向框620。在一個(gè)實(shí)施例中,在框620,利用安全令牌位置的說(shuō)明來(lái)生成HTTP令牌位置頭部。然后,過(guò)程可以流向完成框622,并退出或返回到諸如框418之類的進(jìn)行調(diào)用的程序。如果在判斷框606確定將執(zhí)行分段,則該過(guò)程可以流向框610,在這里,執(zhí)行對(duì)安全令牌的分段,生成多個(gè)HTTP令牌頭部,并將安全令牌的一段插入到每一個(gè)頭部中。然后,該過(guò)程可以流向框620,在這里,可以生成令牌位置頭部。在框620,如果安全令牌被分段,則令牌位置頭部可以指定段的數(shù)量和每一個(gè)段的大小。過(guò)程可以流向完成框622。在判斷框604,可以確定HTTP消息的整個(gè)正文將包含安全令牌。如果這被確定,則過(guò)程可以流向框612,在這里,將安全令牌插入到正文中。然后,該過(guò)程可以在框620繼續(xù), 在這里,可以生成令牌位置頭部。在判斷框604,可以確定安全令牌將被置于接收到的消息的HTML表單字段中。如果這被確定,則過(guò)程可以流向框614,在這里,可以生成指定的表單字段,并將安全令牌插入到其中。然后,該過(guò)程可以在框620繼續(xù),在這里,可以生成令牌位置頭部。 在判斷框604,可以確定安全令牌將被置于消息正文內(nèi)的指定的XML元素中。如果這被確定,則過(guò)程可以流向框616,在這里,可以生成指定的XML元素,并將安全令牌插入到其中。然后,該過(guò)程可以在框620繼續(xù),在這里,可以生成令牌位置頭部。圖7是示出了一示例實(shí)施例中的從HTTP消息中提取安全令牌的過(guò)程700的流程圖。過(guò)程700示出了如上文所討論的框508和518的至少一些動(dòng)作。過(guò)程700的所示出的部分可以在框702被發(fā)起,在這里,可以確定安全令牌的一個(gè)或多個(gè)位置。這可包括指定令牌的位置的令牌位置頭部,如果它是分段的,還包括段的數(shù)量。在一種實(shí)現(xiàn)中,可以在四個(gè)位置中的任何一個(gè)位置配置安全令牌。在判斷框704,過(guò)程可以分叉到四個(gè)框中的一個(gè)框中,以處理相應(yīng)的位置選項(xiàng)。一個(gè)這樣的位置是在一個(gè)或多個(gè)HTTP頭部中。如果確定這就是位置所在,則過(guò)程可以流向框706,在這里,從每一個(gè)頭部中提取安全令牌的一段。如果在一個(gè)以上的對(duì)應(yīng)的頭部中有一個(gè)以上的段,則將它們組裝以形成安全令牌。然后,過(guò)程可以在圖5的框510或520繼續(xù)。在判斷框704,可以確定HTTP消息的整個(gè)正文將包含安全令牌。如果這被確定,則過(guò)程可以流向框708,在這里,從正文中提取安全令牌。然后,過(guò)程可以在框510或520繼續(xù)。在判斷框704,可以確定安全令牌被置于接收到的消息的指定的HTML表單字段中。如果這被確定,則過(guò)程可以流向框710,在這里,從指定的表單字段中提取安全令牌。然后,過(guò)程可以在框510或520繼續(xù)。在判斷框704,可以確定安全令牌被置于消息正文內(nèi)的指定的XML元素中。如果這被確定,則過(guò)程可以流向框712,在這里,從XML元素中提取安全令牌。在一個(gè)實(shí)施例中,通過(guò)使用在令牌位置頭部字段中指定的查詢來(lái)執(zhí)行提取XML元素。然后,過(guò)程可以在框510 或520繼續(xù)。過(guò)程600和700允許用于安全令牌的位置的若干個(gè)選項(xiàng)。例如,如果基于指定的 HTTP頭部大小限制,安全令牌太長(zhǎng)而難以放入單個(gè)HTTP頭部,則它可以被置于多個(gè)HTTP頭部中。如果基于對(duì)總的頭部大小的HTTP約束,安全令牌太長(zhǎng)而難以放入多個(gè)HTTP頭部中, 則它可以被置于消息正文中。過(guò)程進(jìn)一步容納不同的協(xié)議的消息正文,包括HTML或XML。 例如,請(qǐng)求可以采用HTTP POST消息的形式。
示例消息本節(jié)描述了可以被用來(lái)實(shí)現(xiàn)環(huán)境300中所描述的消息或其他消息的消息內(nèi)容的示例。這些描述將被理解為一組示例。在各實(shí)施例中,可以整體地或以其子集的形式使用這些示例來(lái)形成認(rèn)證方案或協(xié)議。在各種實(shí)施例中,關(guān)鍵字或參數(shù)可以不同,并仍被用來(lái)執(zhí)行此處所描述的至少一些機(jī)制。在一個(gè)實(shí)施例中,不使用這些示例中的任何一個(gè)。在一個(gè)實(shí)施例中,如此處所描述的消息被用來(lái)形成一個(gè)協(xié)議,該協(xié)議是對(duì)RFC 沈17的認(rèn)證協(xié)議的擴(kuò)展。這里使用了名稱“WSSEC”作為此協(xié)議的標(biāo)記(moniker)。此處所描述的協(xié)議有助于用于認(rèn)證HTTP請(qǐng)求的各種方案。它還定義了一組新HTTP擴(kuò)展頭部以及它們的語(yǔ)義,供與WSSEC協(xié)議一起使用,以使得該協(xié)議可以在棧中的HTTP層或在HTTP層上方的應(yīng)用中實(shí)現(xiàn)。如此處所討論的,此處所描述的各種動(dòng)作可以由應(yīng)用210的應(yīng)用認(rèn)證模塊212(圖 2)或HTTP棧206的認(rèn)證模塊208來(lái)執(zhí)行。在一個(gè)實(shí)施例中,消息和消息頭部被設(shè)計(jì)成通過(guò)應(yīng)用210或HTTP棧206容納實(shí)現(xiàn),以使得應(yīng)用可以在其中HTTP棧不識(shí)別或處理至少一些頭部或參數(shù)的環(huán)境中實(shí)現(xiàn)至少一些機(jī)制。例如,某些Web服務(wù)器被配置成剝?nèi)?biāo)準(zhǔn)的HTTP 認(rèn)證頭部,如果它們不識(shí)別指定的認(rèn)證方案的話。在這樣的環(huán)境中,此處所定義的自定義頭部仍對(duì)應(yīng)用可用以執(zhí)行認(rèn)證協(xié)議。在某些環(huán)境中,HTTP??梢员慌渲贸勺R(shí)別和處理此處所描述的認(rèn)證方案,使應(yīng)用程序不必執(zhí)行這些任務(wù)。由此,請(qǐng)求方可以以同樣的方式與各種依賴方進(jìn)行交互,不管依賴方是否具有識(shí)別或?qū)崿F(xiàn)此處所描述的頭部的HTTP棧。類似地,依賴方可以與各種請(qǐng)求方進(jìn)行交互,不考慮每一個(gè)請(qǐng)求方的HTTP棧是否實(shí)現(xiàn)此處所描述的HTTP頭部。另外,可以將應(yīng)用部署在其中HTTP棧不處理認(rèn)證方案的環(huán)境中。如果HTTP棧被更新以處理認(rèn)證方案,則應(yīng)用可以繼續(xù)起作用,允許HTTP棧執(zhí)行認(rèn)證動(dòng)作。表1示出了可以在所描述的消息中的每一個(gè)中使用的HTTP頭部。在每一個(gè)消息中,可以包括未描述的額外的HTTP頭部。表 權(quán)利要求
1.一種包括用于處理在請(qǐng)求方(10 和服務(wù)器(106)之間交換的消息的計(jì)算機(jī)程序指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)004),所述程序指令可由處理器(20 執(zhí)行以執(zhí)行包括下列各項(xiàng)的動(dòng)作a)向所述請(qǐng)求方發(fā)送(410)包括一個(gè)或多個(gè)HTTP頭部的服務(wù)器消息(312),所述一個(gè)或多個(gè)HTTP頭部包括一個(gè)或多個(gè)認(rèn)證說(shuō)明;b)從所述請(qǐng)求方接收(504)包括消息正文和多個(gè)HTTP頭部的請(qǐng)求消息(318),所述多個(gè)HTTP頭部包括i)標(biāo)識(shí)安全令牌(325)的位置的安全令牌位置說(shuō)明(70 ;以及ii)包括所述消息正文的至少一部分和所述多個(gè)HTTP頭部的至少一部分的加密表示的摘要(510,520);c)如果所述安全令牌位置說(shuō)明指示所述安全令牌在所述多個(gè)HTTP頭部中,則從所述多個(gè)HTTP頭部中提取(706)所述安全令牌;d)如果所述安全令牌位置說(shuō)明指示所述安全令牌在所述消息正文中,則從所述消息正文中提取(708)所述安全令牌;e)從所述多個(gè)HTTP頭部中提取(510,520)所述摘要;f)驗(yàn)證(510,520)所述摘要準(zhǔn)確地表示所述消息正文和所述HTTP頭部的至少一部分;以及g)基于所述安全令牌,生成G08)響應(yīng)消息。
2.如權(quán)利要求1所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述動(dòng)作還包括a)如果所述安全令牌位置說(shuō)明指示所述安全令牌跨所述多個(gè)HTTP頭部中的至少兩個(gè)被分段,則提取所述安全令牌的每一個(gè)段并組裝各段;以及b)如果所述安全令牌位置說(shuō)明指示所述安全令牌正好在所述多個(gè)HTTP頭部中的一個(gè) HTTP令牌頭部中,則從所述HTTP令牌頭部中提取所述安全令牌。
3.如權(quán)利要求1所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述動(dòng)作還包括a)向所述認(rèn)證說(shuō)明插入安全令牌格式的說(shuō)明;以及b)驗(yàn)證所述安全令牌采用指定的安全令牌格式且所述安全令牌是由受信任的身份提供方所發(fā)出的。
4.如權(quán)利要求1所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述服務(wù)器消息是HTTP錯(cuò)誤消息,所述動(dòng)作還包括在所述一個(gè)或多個(gè)認(rèn)證說(shuō)明中插入對(duì)所述服務(wù)器通過(guò)處理一組 HTTP認(rèn)證頭部中的每一個(gè)接收到的HTTP認(rèn)證頭部來(lái)認(rèn)證接收到的消息的指示,所述一組 HTTP認(rèn)證頭部包括a)指定所述安全令牌的位置的HTTP令牌位置頭部,所述位置指示所述安全令牌在一個(gè)HTTP頭部中,在多個(gè)HTTP頭部中,或在所述消息正文中;b)包括所述安全令牌的至少一段的一個(gè)或多個(gè)HTTP安全令牌頭部;c)包括所述消息正文的至少一部分和所述多個(gè)HTTP頭部的至少一部分的加密表示的摘要令牌;以及d)包括表示所述接收到的消息的至少一部分的數(shù)字簽名的安全令牌。
5.如權(quán)利要求1所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,在將每一個(gè)消息傳遞到應(yīng)用之前,所述計(jì)算機(jī)程序指令被HTTP棧用來(lái)認(rèn)證每一個(gè)消息。
6.如權(quán)利要求1所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,在從服務(wù)器側(cè)HTTP棧接收到每一個(gè)消息之后,所述計(jì)算機(jī)程序指令被應(yīng)用用來(lái)認(rèn)證每一個(gè)消息。
7.如權(quán)利要求1所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述一個(gè)或多個(gè)認(rèn)證說(shuō)明包括數(shù)字簽名說(shuō)明,所述動(dòng)作還包括驗(yàn)證從所述請(qǐng)求方接收到的所述多個(gè)HTTP頭部包括符合所述數(shù)字簽名說(shuō)明的數(shù)字簽名。
8.如權(quán)利要求1所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述動(dòng)作還包括a)向所述響應(yīng)消息插入上下文令牌;b)從所述請(qǐng)求方接收第二請(qǐng)求消息,所述第二請(qǐng)求消息不包括安全令牌;c)驗(yàn)證所述第二請(qǐng)求消息包括所述上下文令牌;以及d)基于驗(yàn)證所述第二請(qǐng)求消息包括所述上下文令牌,生成第二響應(yīng)消息。
9.一種用于處理在請(qǐng)求方(102)和服務(wù)器(106)之間交換的消息的基于計(jì)算機(jī)的系統(tǒng) (100),包括被配置成執(zhí)行包括下列各項(xiàng)的動(dòng)作的消息處理器a)響應(yīng)于服務(wù)器消息包括一個(gè)或多個(gè)HTTP頭部,所述一個(gè)或多個(gè)HTTP頭部包括認(rèn)證說(shuō)明,生成符合所述認(rèn)證說(shuō)明的請(qǐng)求消息;b)向所述請(qǐng)求消息(318)插入(802)符合所述認(rèn)證說(shuō)明中的安全令牌說(shuō)明的安全令牌 (325);c)向所述請(qǐng)求消息插入(804)指定所述安全令牌的位置的HTTP令牌位置頭部;d)向所述請(qǐng)求消息插入(810)包括摘要的HTTP摘要頭部,所述摘要包括至少一個(gè) HTTP頭部的加密表示;以及e)向所述請(qǐng)求消息插入(806)包括所述請(qǐng)求消息的至少一部分的數(shù)字簽名的安全頭部。
10.如權(quán)利要求9所述的基于計(jì)算機(jī)的系統(tǒng),其特征在于,所述動(dòng)作還包括,基于所述安全令牌的大小,確定所述安全令牌的位置,確定所述位置包括確定所述安全令牌是要被置于一個(gè)或多個(gè)HTTP頭部中還是被置于消息正文中。
11.如權(quán)利要求9所述的基于計(jì)算機(jī)的系統(tǒng),其特征在于,所述請(qǐng)求消息是HTTPPOST 消息,所述動(dòng)作還包括將所述安全令牌插入到所述消息正文中的HTML表單字段中。
12.如權(quán)利要求9所述的基于計(jì)算機(jī)的系統(tǒng),其特征在于,所述動(dòng)作還包括,基于所述安全令牌的大小,確定所述安全令牌的位置,確定所述位置包括確定所述安全令牌是正好在一個(gè)HTTP頭部中,還是在多個(gè)HTTP頭部中,或是在消息正文中。
13.如權(quán)利要求9所述的基于計(jì)算機(jī)的系統(tǒng),其特征在于,還包括第二消息處理器,所述第二消息處理器接收所述請(qǐng)求消息,基于所述HTTP令牌位置頭部,從消息正文中有選擇地提取所述安全令牌,基于所述HTTP令牌位置頭部,從正好一個(gè)HTTP頭部中有選擇地提取所述安全令牌,以及基于所述HTTP令牌位置頭部,從多個(gè)HTTP頭部中有選擇地提取所述安全令牌的多個(gè)段。
14.如權(quán)利要求9所述的基于計(jì)算機(jī)的系統(tǒng),其特征在于,生成所述請(qǐng)求消息包括通過(guò)使用HTTP頭部名稱來(lái)生成所述一個(gè)或多個(gè)HTTP頭部,所述HTTP頭部名稱允許所述服務(wù)器的HTTP棧通過(guò)提取和驗(yàn)證所述安全令牌來(lái)認(rèn)證所述消息,而如果所述服務(wù)器的HTTP棧沒(méi)有被配置成提取和驗(yàn)證所述安全令牌,則允許所述服務(wù)器的應(yīng)用通過(guò)提取并驗(yàn)證所述安全令牌來(lái)認(rèn)證所述消息。
15.如權(quán)利要求9所述的基于計(jì)算機(jī)的系統(tǒng),其特征在于,所述動(dòng)作還包括將所述安全令牌插入到消息正文中,所述HTTP令牌位置頭部指定整個(gè)消息正文包含所述安全令牌。
全文摘要
一種用于認(rèn)證HTTP消息的系統(tǒng)和方法。依賴方可以通過(guò)向請(qǐng)求方發(fā)送帶有認(rèn)證說(shuō)明的HTTP消息,對(duì)來(lái)自請(qǐng)求方的請(qǐng)求作出響應(yīng)。請(qǐng)求方用遵循由依賴方所指定的方案的新請(qǐng)求作出響應(yīng)。一種框架允許將安全令牌置于HTTP頭部中或消息正文中,存在諸如將令牌分段之類的各種選項(xiàng)可用。一個(gè)選項(xiàng)允許用密碼將安全令牌綁定到消息的正文。一種認(rèn)證框架提供了通過(guò)HTTP?;蛲ㄟ^(guò)應(yīng)用的實(shí)現(xiàn)。
文檔編號(hào)H04L9/32GK102422593SQ201080021484
公開(kāi)日2012年4月18日 申請(qǐng)日期2010年5月11日 優(yōu)先權(quán)日2009年5月14日
發(fā)明者A·K·納恩達(dá), H·威爾遜 申請(qǐng)人:微軟公司