




已閱讀5頁(yè),還剩58頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目 錄OAuth的2.0授權(quán)協(xié)議11簡(jiǎn)介11.1角色21.2協(xié)議流31.3權(quán)限授予(AuthorizationGrant)41.3.1授權(quán)碼51.3.2隱式51.3.3資源所有者密碼憑據(jù)51.3.4ClientCredentials61.4訪問(wèn)令牌61.5刷新令牌622. ClientRegistration客戶(hù)注冊(cè)82.1客戶(hù)端類(lèi)型82.2客戶(hù)端標(biāo)識(shí)符92.3客戶(hù)端身份驗(yàn)證102.3.1客戶(hù)端的密碼102.3.2其他身份驗(yàn)證方法112.4未注冊(cè)的客戶(hù)端123協(xié)議的端點(diǎn)123.1授權(quán)端點(diǎn)123.1.1響應(yīng)類(lèi)型133.1.2重定向向端點(diǎn)133.2令牌端點(diǎn)153.2.1客戶(hù)端身份驗(yàn)證153.3Access Token Scope164Obtaining Authorization164.1授權(quán)碼164.1.1授權(quán)申請(qǐng)174.1.2授權(quán)應(yīng)答194.1.3訪問(wèn)令牌請(qǐng)求214.1.4訪問(wèn)令牌應(yīng)答224.2隱式授權(quán)234.2.1授權(quán)請(qǐng)求254.2.2訪問(wèn)令牌應(yīng)答264.3資源所有者密碼憑據(jù)284.3.1授權(quán)請(qǐng)求和應(yīng)答294.3.2訪問(wèn)令牌請(qǐng)求294.3.3訪問(wèn)令牌應(yīng)答314.4客戶(hù)端憑證324.4.1授權(quán)請(qǐng)求和應(yīng)答324.4.2訪問(wèn)令牌請(qǐng)求324.4.3訪問(wèn)令牌響應(yīng)334.5擴(kuò)展345分發(fā)訪問(wèn)令牌355.1成功的響應(yīng)355.2錯(cuò)誤響應(yīng)366刷新訪問(wèn)令牌387訪問(wèn)受保護(hù)資源407.1訪問(wèn)令牌類(lèi)型408可擴(kuò)展性418.1定義訪問(wèn)令牌類(lèi)型418.2定義新端點(diǎn)參數(shù)418.3定義新的權(quán)限授予類(lèi)型428.4定義新的授權(quán)端點(diǎn)響應(yīng)類(lèi)型428.5定義額外的錯(cuò)誤碼429本地應(yīng)用4310安全注意事項(xiàng)4410.1客戶(hù)端認(rèn)證4410.2客戶(hù)端模擬4510.3訪問(wèn)令牌4510.4刷新令牌4510.5授權(quán)碼4610.6授權(quán)碼重定向URI的操作4610.7資源所有者密碼保密4710.8請(qǐng)求保密4710.9端點(diǎn)授權(quán)4710.10憑證猜測(cè)攻擊4710.11釣魚(yú)攻擊4710.12夸站點(diǎn)請(qǐng)求偽造4810.13Clickjacking(跨瀏覽器攻擊)4810.14代碼注入和輸入驗(yàn)證4911IANA事項(xiàng)4911.1OAuth訪問(wèn)令牌類(lèi)型注冊(cè)表4911.1.1注冊(cè)模板4911.2The OAuth Parameters Registry5011.2.1注冊(cè)模板5011.2.2初始登記冊(cè)的類(lèi)容5111.3OAuth授權(quán)端點(diǎn)響應(yīng)類(lèi)型注冊(cè)表5411.3.1注冊(cè)模板5511.3.2初始注冊(cè)表內(nèi)容5511.4OAuth擴(kuò)展錯(cuò)誤注冊(cè)表5611.4.1注冊(cè)模板5612CSRF(cross-site request forgery)5712.1示例和特性5712.2防范措施5712.3影響CSRF的因素5713共享session5813.1問(wèn)題5813.1.1網(wǎng)站存在多個(gè)子域名的情況下如何共享session5813.1.2同一個(gè)主域名不同服務(wù)器之間如何共享session5813.2方案5813.2.1創(chuàng)建數(shù)據(jù)庫(kù)表5813.2.2Session數(shù)據(jù)庫(kù)操作58 OAuth的2.0授權(quán)協(xié)議草案-IETF-OAuth - V2 22摘要:OAuth的2.0授權(quán)協(xié)議允許第三方應(yīng)用程序獲取機(jī)會(huì)有限的HTTP服務(wù),無(wú)論是以資源所有者的名義通過(guò)協(xié)調(diào)的批準(zhǔn)資源所有者和HTTP服務(wù)互動(dòng),或通過(guò)允許第三方應(yīng)用程序,以自己的名義獲得的訪問(wèn)。1 簡(jiǎn)介在傳統(tǒng)的客戶(hù)端 - 服務(wù)器的身份驗(yàn)證模型中,客戶(hù)端使用資源所有者服務(wù)器上憑據(jù)(credentials) 進(jìn)行身份驗(yàn)證來(lái)申請(qǐng)?jiān)L問(wèn)受限資源(受保護(hù)的資源)。 為了提供第三方應(yīng)用程序訪問(wèn)受限制的資源,資源的所有者分享其憑據(jù)給第三方。 這將產(chǎn)生幾個(gè)問(wèn)題和限制:a. 第三方的應(yīng)用程序需要存儲(chǔ)資源業(yè)主的憑據(jù),以備將來(lái)使用,通常是一個(gè)明確的密碼文本。b. 服務(wù)器都必須支持密碼認(rèn)證,盡管創(chuàng)建密碼是安全薄弱環(huán)節(jié)。c. 第三方應(yīng)用程序獲得對(duì)資源所有者的受保護(hù)的資源過(guò)大的權(quán)限,讓資源所有者沒(méi)有能力限制周期或訪問(wèn)一個(gè)有限子集資源。d. 資源所有者不能在沒(méi)有撤銷(xiāo)所有的第三方訪問(wèn)的情況下,撤銷(xiāo)個(gè)別第三方的訪問(wèn),而且必須改變自己的密碼來(lái)做這樣的事。e. 折中的任何第三方的應(yīng)用程序?qū)е抡壑械淖罱K用戶(hù)的密碼和所有的數(shù)據(jù)被該密碼保護(hù)。OAuth 定位這些問(wèn)題是通過(guò)引入授權(quán)層和從資源所有者那里分離客戶(hù)端的角色。 在OAuth中,客戶(hù)端請(qǐng)求訪問(wèn)被資源所有者控制和資源服務(wù)器托管的資源,并發(fā)出了跟資源所有者不同的憑據(jù)集合??蛻?hù)端獲得一個(gè)訪問(wèn)令牌,即一個(gè)一個(gè)字符串,表示一個(gè)具體范圍,壽命和其他訪問(wèn)屬性,而不是使用資源所有者的憑據(jù)來(lái)訪問(wèn)受保護(hù)資源。訪問(wèn)令牌被授權(quán)服務(wù)器批準(zhǔn)資源的所有者頒發(fā)給第三方客戶(hù)端。 客戶(hù)端使用訪問(wèn)令牌訪問(wèn)資源服務(wù)器托管的受保護(hù)資源。例如,最終用戶(hù)(資源所有者)可以授予一個(gè)打印服務(wù)(客戶(hù)端)訪問(wèn)她的存儲(chǔ)在共享服務(wù)(資源服務(wù)器)里受保護(hù)相片,而不共享與打印服務(wù)相關(guān)的用戶(hù)名和密碼。相反,她直接用照片共享服務(wù)(授權(quán)服務(wù)器)驗(yàn)證信任的服務(wù)器,這些照片共享服務(wù)產(chǎn)生打印服務(wù)的特定代表的憑據(jù)(訪問(wèn)令牌)。本規(guī)范是專(zhuān)為使用HTTP設(shè)計(jì)的。使用HTTP之外的其他任何傳輸協(xié)議的OAuth的是不確定的。1.1 角色OAuth的定義四個(gè)角色:resource owner資源的所有者:可以獲得授權(quán)去訪問(wèn)受保護(hù)的資源的實(shí)體。這句很繞口,簡(jiǎn)單來(lái)說(shuō)就是資源的所有者,這個(gè)所有者是指當(dāng)初上傳或生成的那個(gè)所有者,并不是指服務(wù)器的所有者。resource server資源服務(wù)器:承載受保護(hù)資源的服務(wù)器,可以接收和響應(yīng)使用access token(訪問(wèn)令牌)請(qǐng)求受保護(hù)資源。cilent客戶(hù)端:一個(gè)產(chǎn)生受保護(hù)資源請(qǐng)求的應(yīng)用,該應(yīng)用代表resource owner,并且已經(jīng)獲得其授權(quán)。所以其實(shí)客戶(hù)就是指前面說(shuō)道的這種特性的應(yīng)用,是種application。authorization server授權(quán)服務(wù)器:在成功驗(yàn)證資源所有者和獲得授權(quán)后,服務(wù)器發(fā)行訪問(wèn)令牌給客戶(hù)端。授權(quán)服務(wù)器和資源服務(wù)器之間的相互作用超出本規(guī)范的范圍。 授權(quán)服務(wù)器可能是同一臺(tái)服務(wù)器作為資源的服務(wù)器或一個(gè)獨(dú)立的實(shí)體。單一授權(quán)服務(wù)器發(fā)出訪問(wèn)令牌可能被多個(gè)資源服務(wù)器接受。1.2 協(xié)議流如圖1所示的抽象流描述的四種角色之間的互動(dòng)還包括了一下步驟:(A)client(就是application)向resource owner請(qǐng)求授權(quán)。可以直接向resource owner請(qǐng)求,但更好的是通過(guò)authorization server作為中間物間接獲得。(比如新浪微博的是否允許授權(quán)的頁(yè)面)(B)client獲得了resource owner的授權(quán)認(rèn)可(authorization grant),此授權(quán)認(rèn)可是四種標(biāo)準(zhǔn)授權(quán)認(rèn)可類(lèi)型中的一種,也可以是其中一種的擴(kuò)展類(lèi)型。獲得的授權(quán)認(rèn)可的類(lèi)型由client請(qǐng)求授權(quán)所使用的函數(shù)和authorization server支持的類(lèi)型決定。(比如采用特定的請(qǐng)求授權(quán)的url,但是傳入不同的參數(shù),或者使用的method不同,當(dāng)然一切都至少服務(wù)器要支持)(C)client提供授權(quán)認(rèn)可,以請(qǐng)求一個(gè)access token,該token是可以被authorization server驗(yàn)證的。(D)authorization server驗(yàn)證client,并且核實(shí)授權(quán)認(rèn)可,如果是有效,就發(fā)放access token。注意這里是兩個(gè)驗(yàn)證,1驗(yàn)證client是不是被承認(rèn)的,2驗(yàn)證resource owner是不是真的授權(quán)了。(E) clent提供access token給resource server驗(yàn)證,判斷此client是否可以獲取受保護(hù)的資源。(F) resource server核實(shí)access token,如果有效則響應(yīng)請(qǐng)求1.3 權(quán)限授予(AuthorizationGrant)權(quán)限授予是一個(gè)憑證,代表著資源所有者的授權(quán)(訪問(wèn)它的受保護(hù)資源),它被客戶(hù)端用來(lái)獲得一個(gè)訪問(wèn)令牌。此規(guī)范定義了四種授予類(lèi)型:的授權(quán)金是代表資源的憑據(jù)由所有者的授權(quán)(訪問(wèn)受保護(hù)的資源)客戶(hù)端獲得一個(gè)訪問(wèn)令牌。 此規(guī)范定義了四種授予類(lèi)型:授權(quán)碼,隱式,資源所有者密碼憑據(jù),客戶(hù)端憑據(jù),以及一個(gè)擴(kuò)展定義其他類(lèi)型的機(jī)制。1.3.1 授權(quán)碼授權(quán)碼是通過(guò)使用授權(quán)服務(wù)器作為客戶(hù)端和資源所有者之間的中介被獲取的??蛻?hù)端請(qǐng)求授權(quán)指示資源所有者的授權(quán)服務(wù)器,這樣服務(wù)器反過(guò)來(lái)又指導(dǎo)資源所有者將授權(quán)碼返回客戶(hù)端。而不是直接向資源的所有者申請(qǐng)授權(quán)。在引導(dǎo)資源所有者將授權(quán)碼返回客戶(hù)端之前,授權(quán)服務(wù)器驗(yàn)證資源的所有者并獲得授權(quán)。由于資源的所有者只跟授權(quán)服務(wù)器認(rèn)證,資源所有者的憑證不會(huì)與客戶(hù)端分享。授權(quán)碼提供了一些重要的安全優(yōu)勢(shì)如驗(yàn)證客戶(hù)端的能力,和不通過(guò)資源所有者的用戶(hù)代理而直接給客戶(hù)端的訪問(wèn)令牌傳輸,可能暴露給他人,包括資源的所有者。1.3.2 隱式隱式授予是一個(gè)簡(jiǎn)化的授權(quán)碼流,為了優(yōu)化客戶(hù)端實(shí)現(xiàn)在瀏覽器中使用例如JAVAScript的腳本語(yǔ)言。在隱流中,客戶(hù)端直接發(fā)出一個(gè)訪問(wèn)令牌(作為資源的所有者授權(quán)的結(jié)果),而不是給客戶(hù)端發(fā)出一個(gè)授權(quán)碼。授予類(lèi)型是隱式的就像沒(méi)有中間的憑據(jù)(如授權(quán)碼)被發(fā)出(后來(lái)被用來(lái)獲得一個(gè)訪問(wèn)令牌)。 當(dāng)發(fā)出一個(gè)隱含的授予,授權(quán)服務(wù)器不驗(yàn)證客戶(hù)端。在某些情況下,可以通過(guò)用來(lái)給客戶(hù)端提供的訪問(wèn)令牌的重定向URI,來(lái)驗(yàn)證客戶(hù)端的身份。訪問(wèn)令牌可能會(huì)被暴露給資源的所有者或者其它要訪問(wèn)資源所有者的用戶(hù)代理的應(yīng)用程序。隱式授權(quán)提高了某些客戶(hù)端的響應(yīng)速度和效率(如實(shí)現(xiàn)在瀏覽器應(yīng)用程序的客戶(hù)端),因?yàn)樗档土双@得所需的往返訪問(wèn)令牌的數(shù)量。然而,這種便利應(yīng)權(quán)衡使用隱式授權(quán)的安全隱患,尤其是當(dāng)授權(quán)碼授予類(lèi)型是可用的。1.3.3 資源所有者密碼憑據(jù)資源所有者密碼憑據(jù)(即用戶(hù)名和密碼)可直接作為一個(gè)權(quán)限授予獲得訪問(wèn)令牌。憑證只有在資源所有者和客戶(hù)端之間存在一個(gè)高等級(jí)的信任的時(shí)候使用(如設(shè)備的操作系統(tǒng)或一個(gè)高特權(quán)的應(yīng)用程序),或者當(dāng)其它權(quán)限授予類(lèi)型不可用時(shí)(如授權(quán)碼)憑據(jù)才被使用。盡管這種授權(quán)類(lèi)型需要引導(dǎo)客戶(hù)端訪問(wèn)資源所有者憑證,資源所有者憑證被用于一個(gè)單一的請(qǐng)求,并交換一個(gè)訪問(wèn)令牌。這種授予類(lèi)型用持久的訪問(wèn)令牌或刷新令牌來(lái)交換憑據(jù),這樣可以消除客戶(hù)端必須存儲(chǔ)以供將來(lái)使用的資源所有者憑證的需要。1.3.4 ClientCredentials客戶(hù)憑證(或其他形式的客戶(hù)端身份驗(yàn)證)可被用作一個(gè)權(quán)限授予當(dāng)授權(quán)范圍被限制在保護(hù)資源在客戶(hù)端控制下,或者 授權(quán)資源先前被安排給授權(quán)服務(wù)器。當(dāng)客戶(hù)端正以自己的名義行事(客戶(hù)端也是資源所有者),或者客戶(hù)端正在請(qǐng)求訪問(wèn)根據(jù)一個(gè)授權(quán)先前安排的授權(quán)服務(wù)器的受保護(hù)資源時(shí),客戶(hù)端憑證被典型被用來(lái)作為一種權(quán)限授予。1.4 訪問(wèn)令牌訪問(wèn)令牌是用于訪問(wèn)受保護(hù)的資源的憑據(jù)。 一個(gè)訪問(wèn)令牌是一個(gè)字符串,代表發(fā)送給客戶(hù)端的授權(quán)。字符串通常是對(duì)客戶(hù)端不透明的。令牌代表訪問(wèn)的具體范圍和持續(xù)時(shí)間,由資源所有者授予,被資源的服務(wù)器和授權(quán)執(zhí)行服務(wù)器強(qiáng)行執(zhí)行。令牌可以表示用于檢索授權(quán)信息的標(biāo)識(shí)符,或用一種可核查的方式自我包含在授權(quán)信息中(即一個(gè)令牌字符串的一些數(shù)據(jù)組成和簽名)。 超過(guò)了本規(guī)范范圍的額外的身份驗(yàn)證憑據(jù),可能為了客戶(hù)端使用令牌而被需要。訪問(wèn)令牌提供了一個(gè)抽象層,用一個(gè)簡(jiǎn)單的被資源服務(wù)器理解的令牌來(lái)更換不同單一授權(quán)結(jié)構(gòu)(如用戶(hù)名和密碼)。 這種抽象使發(fā)出的訪問(wèn)令牌比用來(lái)接收他們的權(quán)限授予更具有限制性,以及刪除資源服務(wù)器的需要去了解一個(gè)廣泛的驗(yàn)證方法。訪問(wèn)令牌可以有不同的格式,結(jié)構(gòu)和基于資源服務(wù)安全性需求的方法利用率(如加密屬性)。訪問(wèn)令牌的屬性和用于訪問(wèn)受保護(hù)資源的方法超出了本規(guī)范和同伴規(guī)范定義的范圍。1.5 刷新令牌刷新令牌是用來(lái)獲取訪問(wèn)令牌的憑據(jù)。在當(dāng)前的訪問(wèn)令牌變成無(wú)效或過(guò)期,或獲得額外的訪問(wèn)令牌具有相同或更窄的范圍(訪問(wèn)令牌可能有較短期少于資源授權(quán)的權(quán)限所有者)時(shí),刷新令牌被授權(quán)服務(wù)器發(fā)送給客戶(hù)端用于獲取一個(gè)新的訪問(wèn)令牌。分發(fā)刷新標(biāo)記是可選的。如果authorization server分發(fā)可刷新令牌,那么當(dāng)分發(fā)access token的時(shí)候就會(huì)將可刷新令牌包括進(jìn)去。刷新令牌是一個(gè)字符串,代表權(quán)限被資源所有者授予給客戶(hù)端。字符串通常對(duì)客戶(hù)端是透明的。令牌表示用于檢索授權(quán)信息的標(biāo)示符。與訪問(wèn)令牌不同的是,可刷新令牌只被用于授權(quán)服務(wù)器,而不會(huì)發(fā)送給資源服務(wù)器。發(fā)送給資源服務(wù)器的始終是訪問(wèn)令牌。下面看一個(gè)關(guān)于可刷新令牌的處理流程圖。該流程圖包括以下步驟:(A)客戶(hù)端訪問(wèn)授權(quán)服務(wù)器進(jìn)行驗(yàn)證,通過(guò)提供授權(quán)認(rèn)可,以請(qǐng)求訪問(wèn)令牌。(B)授權(quán)服務(wù)器驗(yàn)證客戶(hù)端并且驗(yàn)證授權(quán)認(rèn)可(四種類(lèi)型中的一種),如果有效則分發(fā)一個(gè)訪問(wèn)令牌和一個(gè)可刷新令牌(C)通過(guò)提供訪問(wèn)令牌,客戶(hù)端可向資源服務(wù)器請(qǐng)求受保護(hù)資源。(D)資源服務(wù)器驗(yàn)證驗(yàn)證訪問(wèn)令牌,如果有效,就響應(yīng)請(qǐng)求。(E)步驟(C)和(D)重復(fù)進(jìn)行,直到訪問(wèn)令牌過(guò)期。如果client知道訪問(wèn)令牌過(guò)期,就直接跳到步驟(G),否則它還會(huì)請(qǐng)求受保護(hù)資源。(F)由于訪問(wèn)令牌失效,資源服務(wù)器返回?zé)o效令牌錯(cuò)誤。(G)client請(qǐng)求一個(gè)新的訪問(wèn)令牌,通過(guò)向授權(quán)服務(wù)器提供可刷新令牌并進(jìn)行驗(yàn)證。對(duì)client的驗(yàn)證條件是基于client的類(lèi)型和authorization server的策略。(H)authorization server驗(yàn)證client和可刷新令牌,如果有效就分發(fā)一個(gè)新的訪問(wèn)令牌(你也可以再發(fā)送一個(gè)新的可刷新令牌)2 2. ClientRegistration客戶(hù)注冊(cè)發(fā)起協(xié)議之前,客戶(hù)端注冊(cè)授權(quán)服務(wù)器。在客戶(hù)端注冊(cè)透過(guò)何種途徑與授服務(wù)器超出此范圍規(guī)范,但通常涉及與最終用戶(hù)互動(dòng)HTML登記表??蛻?hù)端注冊(cè)不需要客戶(hù)端和授權(quán)服務(wù)器之間的直接互動(dòng)。當(dāng)支持授權(quán)服務(wù)器時(shí),注冊(cè)可以依靠其他手段建立信任和獲取所需的客戶(hù)端屬性(例如:重定向的URI,客戶(hù)端類(lèi)型)。例如,可以注冊(cè)使用自發(fā)行或第三方發(fā)行的主張來(lái)實(shí)現(xiàn),或授權(quán)服務(wù)器執(zhí)行客戶(hù)端發(fā)現(xiàn)使用信任的渠道。2.1 客戶(hù)端類(lèi)型OAuth的定義了兩種客戶(hù)端類(lèi)型,在授權(quán)服務(wù)器下根據(jù)自己的能力驗(yàn)證安全性(即保持他們的客戶(hù)端憑據(jù)的保密的能力):保密性:客戶(hù)能夠保持其憑據(jù)機(jī)密性(如客戶(hù)端一個(gè)安全的服務(wù)器與實(shí)施限制訪問(wèn)的客戶(hù)端憑據(jù)),或使用其他手段保證客戶(hù)端身份驗(yàn)證安全的能力。公開(kāi)性:客戶(hù)無(wú)法維持其保密憑據(jù)(如客戶(hù)資源所有者的設(shè)備上執(zhí)行如安裝本地應(yīng)用程序或基于Web瀏覽器應(yīng)用程序),無(wú)法通過(guò)任何其他手段確保客戶(hù)端身份驗(yàn)證安全??蛻?hù)類(lèi)型的制定是基于授權(quán)服務(wù)器安全認(rèn)證的定義和它可接受的風(fēng)險(xiǎn)級(jí)別的客戶(hù)端憑據(jù)。此規(guī)范已經(jīng)圍繞以下客戶(hù)端設(shè)計(jì)配置文件:Web應(yīng)用程序Web應(yīng)用程序是一個(gè)網(wǎng)絡(luò)服務(wù)器上運(yùn)行的機(jī)密的客戶(hù)端。資源所有者通過(guò)一個(gè)HTML用戶(hù)界面呈現(xiàn)在資源所有者的設(shè)備上的用戶(hù)代理來(lái)訪問(wèn)客戶(hù)端??蛻?hù)端憑據(jù),以及任何分發(fā)給客戶(hù)端的訪問(wèn)令牌被存儲(chǔ)在Web服務(wù)器上,并沒(méi)有暴露或由資源的所有者訪問(wèn)。用戶(hù)代理為基礎(chǔ)的應(yīng)用用戶(hù)代理為基礎(chǔ)的應(yīng)用是一個(gè)公共的客戶(hù)端,客戶(hù)端代碼是從Web服務(wù)器下載,并在資源所有者的設(shè)備(如Web瀏覽器)上的用戶(hù)代理執(zhí)行?!皡f(xié)議”的相關(guān)數(shù)據(jù)和憑證能方便(而且往往可見(jiàn))資源的所有者訪問(wèn)。 由于這些應(yīng)用程序駐留在用戶(hù)代理上,他們可以在請(qǐng)求權(quán)限時(shí)無(wú)縫使用用戶(hù)代理能力。本機(jī)應(yīng)用程序本機(jī)應(yīng)用程序是在公共的客戶(hù)端上安裝和資源所有者的設(shè)備上執(zhí)行的。“協(xié)議”的相關(guān)數(shù)據(jù)和憑據(jù)可被資源的所有者訪問(wèn)。據(jù)推測(cè),任何包含在應(yīng)用程序內(nèi)的客戶(hù)端身份驗(yàn)證憑據(jù)可以被提取。另一方面,動(dòng)態(tài)分發(fā)的憑據(jù),例如訪問(wèn)令牌或刷新令牌可以得到一個(gè)可接受的水平保護(hù)。在最低限度,隔離這些憑據(jù)與該應(yīng)用程序可能交互的敵對(duì)服務(wù)器之外。在某些平臺(tái),這些憑據(jù)可能被保護(hù),使之與駐留在同一設(shè)備上的其它應(yīng)用程序隔離。2.2 客戶(hù)端標(biāo)識(shí)符授權(quán)服務(wù)器分發(fā)給登記客戶(hù)端一個(gè)客戶(hù)標(biāo)識(shí)符一個(gè)唯一的字符串代表由客戶(hù)提供的登記信息??蛻?hù)端標(biāo)識(shí)符是不是公開(kāi)的秘密,它暴露給資源所有者,絕不能單獨(dú)適用于客戶(hù)端身份驗(yàn)證。2.3 客戶(hù)端身份驗(yàn)證如果客戶(hù)端類(lèi)型是保密的,客戶(hù)端和授權(quán)服務(wù)器建立適合授權(quán)服務(wù)器的安全需求的一個(gè)客戶(hù)端驗(yàn)證方法。授權(quán)服務(wù)器可以接受任何形式的客戶(hù)端認(rèn)證,滿(mǎn)足其安全要求。保密客戶(hù)通常使用授權(quán)服務(wù)器發(fā)出(或建立)一套用于授權(quán)的客戶(hù)憑證(如密碼,公鑰/私鑰對(duì))的客戶(hù)端憑據(jù)。授權(quán)服務(wù)器不應(yīng)該對(duì)客戶(hù)端的類(lèi)型做假設(shè),或者接受沒(méi)有與客戶(hù)或者開(kāi)發(fā)者建立信任所提供的類(lèi)型信息。授權(quán)服務(wù)器可能用公共客戶(hù)建立一個(gè)客戶(hù)授權(quán)方法。但是,授權(quán)服務(wù)器決不能為了認(rèn)證客戶(hù)的目的而依靠公共客戶(hù)端認(rèn)證??蛻?hù)端不得使用多個(gè)驗(yàn)證方法在每個(gè)請(qǐng)求。2.3.1 客戶(hù)端的密碼私有一個(gè)客戶(hù)端密碼的客戶(hù)端可以使用HTTP基本驗(yàn)證計(jì)劃??蛻?hù)端標(biāo)識(shí)符用作用戶(hù)名,客戶(hù)端的密碼是用來(lái)作為密碼。例如(額外的換行符僅用于顯示目的):授權(quán):基本czZCaGRSa3F0MzpnWDFmQmF0M2JW另外,授權(quán)服務(wù)器可能允許客戶(hù)端憑證包括在請(qǐng)求體使用如下的參數(shù):Client_id REQUIRED. 在登記過(guò)程中客戶(hù)端標(biāo)示符分發(fā)給客戶(hù)端 Client-secret REQUIRED. 客戶(hù) secret??蛻?hù)端可以省略參數(shù)如果客戶(hù)secret是空字符串??蛻?hù)端憑證包括在請(qǐng)求正文中使用兩個(gè)客參數(shù)不被推薦,并應(yīng)限于客戶(hù)端無(wú)法直接利用HTTP基本身份驗(yàn)證計(jì)劃(或其他基于密碼的HTTP認(rèn)證方案)。例如,請(qǐng)求刷新一個(gè)訪問(wèn)令牌(第6章)使用正文參數(shù)(額外的換行符僅用于顯示目的): POST /token HTTP/1.1 Host: Content-Type:application/x-www-form-urlencoded;charset=UTF-8grant_type=refresh_token&refresh_token=tGzv3JOkF0XG5Qx2TlKWIA&client_id=s6BhdRkqt3&client_secret=7Fjfp0ZBr1KtDRbnfVdmIw當(dāng)將請(qǐng)求發(fā)送到令牌端點(diǎn)時(shí),授權(quán)服務(wù)器必須要求使用傳輸層安全機(jī)制,這樣請(qǐng)求使用此認(rèn)證方法的導(dǎo)致明文憑據(jù)的傳輸。由于這個(gè)客戶(hù)端的身份驗(yàn)證方法包括密碼,授權(quán)服務(wù)器必須保護(hù)任何終端利用它對(duì)抗端點(diǎn)蠻力攻擊。2.3.2 其他身份驗(yàn)證方法授權(quán)服務(wù)器可能支持任何合適的HTTP認(rèn)證計(jì)劃匹配其安全性要求。當(dāng)用其他的身份驗(yàn)證方法,授權(quán)服務(wù)器必須在客戶(hù)端標(biāo)識(shí)符(登記備案)和身份驗(yàn)證方案之間定義一個(gè)映射。2.4 未注冊(cè)的客戶(hù)端本規(guī)范不排除使用未經(jīng)注冊(cè)的客戶(hù)。但是,這樣的客戶(hù)使用超出此范圍規(guī)范,并且需要額外的安全分析和審查其互操作性的影響。3 協(xié)議的端點(diǎn)授權(quán)過(guò)程中利用兩個(gè)端點(diǎn)(HTTP資源):授權(quán)端點(diǎn)-用于向通過(guò)用戶(hù)代理重定向的資源所有者獲取授權(quán)。令牌終點(diǎn) -用來(lái)交換權(quán)限授予訪問(wèn)令牌,通常隨著客戶(hù)端身份驗(yàn)證。并非每個(gè)授權(quán)授予類(lèi)型采用兩個(gè)端點(diǎn)。如有需要,擴(kuò)展授予類(lèi)型可以定義額外的端點(diǎn)。3.1 授權(quán)端點(diǎn)授權(quán)端點(diǎn)用來(lái)與資源所有者交互,獲得權(quán)限的授予。授權(quán)服務(wù)器必須首先驗(yàn)證資源的所有者的身份。方式授權(quán)服務(wù)器驗(yàn)證資源所有者(如用戶(hù)名和密碼登錄,會(huì)話(huà)cookies)超出范圍本規(guī)范??蛻?hù)端透過(guò)何種途徑獲得授權(quán)端點(diǎn)的位置超出本規(guī)范的范圍,但位置通常在服務(wù)文檔里被提供。端點(diǎn)URI可能包括一個(gè)“application/x-www-form-urlencoded”格式化的查詢(xún)組件,加入額外的查詢(xún)參數(shù)時(shí),必須保留。端點(diǎn)URI不能包含片段組件。由于請(qǐng)求授權(quán)端點(diǎn)導(dǎo)致用戶(hù)身份驗(yàn)證和明文憑據(jù)(HTTP響應(yīng))的傳輸,授權(quán)服務(wù)器必須要求在授權(quán)端點(diǎn)發(fā)送請(qǐng)求時(shí)使用的傳輸層安全機(jī)制。授權(quán)服務(wù)器必須支持TLS 1.0,應(yīng)該支持TLS 1.2和它的以后的版本,可以支持額外的傳輸層機(jī)制以滿(mǎn)足它的安全性需要。授權(quán)服務(wù)器必須支持對(duì)授權(quán)斷點(diǎn)的HTTP “GET” 方法的使用,也可以支持“POST”方法的使用。沒(méi)有賦值的參數(shù)必須當(dāng)做它們是從請(qǐng)求中被忽略的。授權(quán)服務(wù)器必須忽視無(wú)法識(shí)別的請(qǐng)求參數(shù)。請(qǐng)求和回應(yīng)參數(shù)必須不能被包含超過(guò)一次。3.1.1 響應(yīng)類(lèi)型 是被授權(quán)碼授權(quán)類(lèi)型和隱式授權(quán)類(lèi)型流使用的??蛻?hù)端通知需要授權(quán)類(lèi)型的授權(quán)端點(diǎn)使用以下參數(shù)。response_typeREQUIRED. 它的值必須是請(qǐng)求授權(quán)碼中一個(gè)碼就像4.1.1結(jié)所描述,令牌就如4.2.1結(jié)描述的請(qǐng)求一個(gè)訪問(wèn)令牌(隱式授予),或者一個(gè)如8.4結(jié)描述的注冊(cè)擴(kuò)展值。如果響應(yīng)類(lèi)型包括一個(gè)或者更多空格字符(%x20), 它被解釋為一個(gè)空格分隔列表值,值的順序沒(méi)有關(guān)系(例如“a b”跟“b a”是一樣的) 如果一個(gè)授權(quán)響應(yīng)丟失了“response_type”參數(shù),授權(quán)服務(wù)器必須返回一個(gè)錯(cuò)誤回復(fù),就如結(jié)所述。3.1.2 重定向向端點(diǎn)與資源的所有者完成互動(dòng)后,授權(quán)服務(wù)器指示資源所有者的用戶(hù)代理返回客戶(hù)端。授權(quán)服務(wù)器重定向用戶(hù)代理到客戶(hù)端的重定向終點(diǎn),重定向終點(diǎn)是先前客戶(hù)端注冊(cè)進(jìn)程或者發(fā)出授權(quán)請(qǐng)求時(shí)由授權(quán)服務(wù)器建立的。 重定向端點(diǎn)URI必須是一個(gè)絕對(duì)的URI,如4.3所述。終點(diǎn) URI可能包含anapplication/x-www-form-urlencoded格式化查詢(xún)組件,加入額外的查詢(xún)參數(shù)時(shí),必須保留。端點(diǎn)URI不能包含片段組件。 端點(diǎn)要求保密如果一個(gè)重定向請(qǐng)求將導(dǎo)致授權(quán)碼的傳輸或者訪問(wèn)令牌通過(guò)一個(gè)開(kāi)放網(wǎng)絡(luò)(在資源所有者的用戶(hù)代理和客戶(hù)端之間),客戶(hù)端應(yīng)需要使用傳輸層安全機(jī)制。 傳輸層安全性的缺乏可能對(duì)客戶(hù)端的安全和受保護(hù)資源授權(quán)訪問(wèn)造成嚴(yán)重影響。當(dāng)客戶(hù)端將授權(quán)過(guò)程當(dāng)做一種委派最終用戶(hù)身份驗(yàn)證時(shí),傳輸層安全機(jī)制的使用變得尤為關(guān)鍵。 注冊(cè)要求授權(quán)服務(wù)器應(yīng)要求所有client用授權(quán)終端登記他們先前的重定向URI,并且必須要求以下的client登記他們的重定向URI:a) public clientsb) 安全的clients 使用隱式的授權(quán)類(lèi)型授權(quán)服務(wù)器應(yīng)要求客戶(hù)端提供完整的重定向URI(客戶(hù)端可以使用“state”的請(qǐng)求參數(shù)來(lái)實(shí)現(xiàn)每個(gè)請(qǐng)求定制)。授權(quán)服務(wù)器允許客戶(hù)端注冊(cè)多個(gè)重定向URI. 如果要求完成重定向的URI注冊(cè)登記是不可能的,授權(quán)服務(wù)器應(yīng)要求URI方案,權(quán)限和路徑(請(qǐng)求授權(quán)時(shí),許客戶(hù)端動(dòng)態(tài)改變注冊(cè)重定向URI的查詢(xún)組件)的注冊(cè)。 動(dòng)態(tài)配置如果已注冊(cè)多個(gè)重定向的URI,如果只有部分重定向URI已被注冊(cè),或如果沒(méi)有重定向URI已注冊(cè),客戶(hù)端必須包括重定向URI,在授權(quán)請(qǐng)求時(shí)使用“redirect_uri”請(qǐng)求參數(shù)。 當(dāng)一個(gè)重定向URI 被包含在授權(quán)請(qǐng)求中時(shí),授權(quán)服務(wù)器必須比較和匹配最少一個(gè)接受到的已注冊(cè)的重定向URI(或者URI組件)就如第6章定義的,如果任何重定向URI被注冊(cè)了,授權(quán)服務(wù)器必須使用簡(jiǎn)單的字符串比較對(duì)比兩個(gè)URI,就如6.2.1結(jié)所述。 如果授權(quán)服務(wù)器準(zhǔn)許client動(dòng)態(tài)的改變重定向URI的查詢(xún)組件,client 必須確保操作查詢(xún)組件時(shí)不被攻擊者濫用重定向終點(diǎn),就如10.15結(jié)所述。.1 無(wú)效端點(diǎn)如果授權(quán)請(qǐng)求驗(yàn)證失敗是由于丟失,無(wú)效,或者重定向URI不匹配,授權(quán)服務(wù)器必須通知資源所有者錯(cuò)誤信息,必須不能自動(dòng)重定向用戶(hù)代理到無(wú)效的重定向URI。授權(quán)服務(wù)器不應(yīng)該重定向用戶(hù)代理到未注冊(cè)或者不信任的URI ,以防止授權(quán)終端被公開(kāi)的重定向者利用。.2 端點(diǎn)內(nèi)容到客戶(hù)端點(diǎn)的重定向請(qǐng)求通常結(jié)果是一個(gè)HTML的文檔響應(yīng),被用戶(hù)代理所有。如果HTML響應(yīng)被直接服務(wù)為重定向響應(yīng)的結(jié)果,任何腳本包括HTML文檔會(huì)帶著全部重定向URI訪問(wèn)和它自帶的憑證執(zhí)行。Client 必須不能包含任何不受信任第三方腳本在重定向端點(diǎn)響應(yīng)中(比如 第三方分析器,社區(qū)插件,網(wǎng)絡(luò)服務(wù)),第三方腳本沒(méi)有第一次保證 它自己被用來(lái)提取和刪除在URI的憑證的腳本將首次執(zhí)行。Client 不應(yīng)該包含任何第三方腳本在重定向端點(diǎn)響應(yīng)中。相反的,它應(yīng)該從URI和重定向用戶(hù)代理中提取憑證,并在沒(méi)有憑證的URI里重定向用戶(hù)代理到另外的端點(diǎn)。3.2 令牌端點(diǎn)令牌端點(diǎn)被client用來(lái)接受一個(gè)介紹他權(quán)限授予或者刷新令牌的訪問(wèn)令牌。令牌端點(diǎn)被每一個(gè)權(quán)限授予使用,除了隱式授予類(lèi)型(應(yīng)為訪問(wèn)令牌被直接分發(fā))??蛻?hù)端透過(guò)何種途徑獲得令牌的位置端點(diǎn)超出本規(guī)范的范圍,但通常在服務(wù)文檔里提供。沒(méi)有賦值的參數(shù)必須當(dāng)做它們是從請(qǐng)求中被忽略的。授權(quán)服務(wù)器必須忽視無(wú)法識(shí)別的請(qǐng)求參數(shù)。請(qǐng)求和回應(yīng)參數(shù)必須不能被包含超過(guò)一次。3.2.1 客戶(hù)端身份驗(yàn)證保密的客戶(hù),分發(fā)客戶(hù)憑證的客戶(hù),或者交辦其它授權(quán)請(qǐng)求的客戶(hù)必須被授權(quán)服務(wù)器驗(yàn)證身份在產(chǎn)生對(duì)令牌端點(diǎn)的請(qǐng)求時(shí),就如2.3所述??蛻?hù)端身份驗(yàn)證被用來(lái):(a) 執(zhí)行客戶(hù)端分發(fā)的刷新令牌和授權(quán)碼到客戶(hù)端的綁定。當(dāng)一個(gè)授權(quán)碼通過(guò)不安全的通道或者當(dāng)重定向URI還沒(méi)有被全部注冊(cè)時(shí),授權(quán)碼傳送到重定向端點(diǎn)的關(guān)鍵是客戶(hù)端驗(yàn)證。(b) 通過(guò)禁用客戶(hù)端或改變其憑據(jù)來(lái)從受影響的客戶(hù)端恢復(fù),從而防止攻擊者濫用被盜刷新令牌。改變一個(gè)單一的客戶(hù)端憑據(jù)集合顯然比撤銷(xiāo)整套刷新令牌的更快。(c) 實(shí)施認(rèn)證管理的最佳做法,需要定期憑據(jù)輪換。整套刷新令牌的輪換可能是具有挑戰(zhàn)性,而一個(gè)單一的客戶(hù)端憑據(jù)的輪換顯然比較容易。在給令牌端點(diǎn)傳送請(qǐng)求時(shí),一個(gè)沒(méi)有被分發(fā)客戶(hù)密碼的公共客戶(hù)可能使用“client_id”請(qǐng)求參數(shù)來(lái)認(rèn)證它自己。準(zhǔn)許公共客戶(hù)到令牌端點(diǎn)的未認(rèn)證訪問(wèn)的安全后果,如同到公共客戶(hù)的不安全的刷新令牌必須被考慮。3.3 Access Token Scope身份認(rèn)真和令牌端點(diǎn)準(zhǔn)許客戶(hù)使用“scope”請(qǐng)求參數(shù)指定訪問(wèn)請(qǐng)求的范圍。反過(guò)來(lái),授權(quán)服務(wù)器使用的“范圍”的響應(yīng)參數(shù)通知客戶(hù)端發(fā)出的訪問(wèn)令牌的范圍。范圍參數(shù)值表示為空間分隔,大小寫(xiě)敏感的字符串列表。這個(gè)字符串被授權(quán)服務(wù)器定義。如果值包含過(guò)個(gè)空間分隔字符串,他們的順序沒(méi)關(guān)系,每個(gè)字符增加一個(gè)額外的訪問(wèn)邊界給請(qǐng)求邊界。授權(quán)服務(wù)器可能全部或者部分忽視客戶(hù)端請(qǐng)求的邊界,該客戶(hù)請(qǐng)求時(shí)根據(jù)授權(quán)服務(wù)器政策或資源所有者的指。如果分發(fā)訪問(wèn)令牌邊界與客戶(hù)端請(qǐng)求的不同,授權(quán)服務(wù)器應(yīng)該包括“scope”響應(yīng)參數(shù)去通知客戶(hù)端實(shí)際被授予的邊界。4 Obtaining Authorization 4.1 授權(quán)碼授權(quán)碼授予類(lèi)型被用來(lái)獲得訪問(wèn)令牌和刷新令牌,還被用來(lái)優(yōu)化機(jī)密性客戶(hù)端。作為一個(gè)基于重定向的流,客戶(hù)必須具有與資源所有者的用戶(hù)代理(通常是是web 瀏覽器)交互的能力和接受來(lái)自授權(quán)服務(wù)器進(jìn)入請(qǐng)求(通過(guò)重定向)的能力。上面的流程圖包括了如下3個(gè)步驟:(a) 客戶(hù)端開(kāi)始流程,引導(dǎo)資源所有者的用戶(hù)代理到授權(quán)端點(diǎn)??蛻?hù)端包括其客戶(hù)端標(biāo)識(shí)符,請(qǐng)求的范圍,本地狀態(tài)和重定向URI,重定向URI是當(dāng)訪問(wèn)被授權(quán)后授權(quán)服務(wù)器發(fā)送回的用戶(hù)代理的。(b) 授權(quán)服務(wù)器認(rèn)證資源所有者(通過(guò)用戶(hù)代理)然后建立客戶(hù)端的訪問(wèn)請(qǐng)求,不論資源所有者授權(quán)或者拒絕。(c) 假如資源所有者授權(quán)訪問(wèn),授權(quán)服務(wù)器使用先前重定向URI(在請(qǐng)求時(shí)或者客戶(hù)注冊(cè)期間)將用戶(hù)代理重定向回客戶(hù)。重定向URI包括一個(gè)授權(quán)碼和任何早起客戶(hù)端提供的本地狀態(tài)。(d) 客戶(hù)從授權(quán)服務(wù)器的令牌端點(diǎn)請(qǐng)求一個(gè)訪問(wèn)令牌,包括在上一步中收到的授權(quán)碼。在做出請(qǐng)求時(shí),客戶(hù)與授權(quán)服務(wù)器驗(yàn)證。包括重定向URI 的客戶(hù)用于獲得驗(yàn)證授權(quán)碼。(e) 授權(quán)服務(wù)器驗(yàn)證客戶(hù)端身份,驗(yàn)證授權(quán)碼,保證接收到的重定向URI與步驟(c)中用于重定向客戶(hù)端的URI向匹配。如果有效,授權(quán)服務(wù)器回復(fù)一個(gè)訪問(wèn)令牌和和可選擇的刷新令牌。4.1.1 授權(quán)申請(qǐng)客戶(hù)端通過(guò)增加下面參數(shù)到授權(quán)端點(diǎn)URI的查詢(xún)組件構(gòu)造請(qǐng)求URI,使用application/x-www-form-urlencoded格式來(lái)構(gòu)造。Response_typeREQUIRED. 必須被賦值。Client_idREQUIRED. 客戶(hù)身份,2.2結(jié)介紹Redirect_uriOPTIONAL , 3.1.2結(jié)介紹。ScopeOPTIONAL, 訪問(wèn)請(qǐng)求的范圍,如3.3結(jié)描述。StateRECOMMENDED, 一個(gè)不透明的值,由客戶(hù)端用來(lái)維持請(qǐng)求和回調(diào)狀態(tài)。當(dāng)重定向用戶(hù)代理給客戶(hù)端時(shí),授權(quán)服務(wù)器包括此值。參數(shù)應(yīng)當(dāng)用于防止跨站點(diǎn)請(qǐng)求偽造,如10.12結(jié)所述。Client使用一個(gè)HTTP重定向回答,或者用其它通過(guò)用戶(hù)代理的方法將資源所有者引導(dǎo)到構(gòu)造好的URI.例如,客戶(hù)端引導(dǎo)用戶(hù)代理去做如下HTTP請(qǐng)求,使用傳輸層安全機(jī)制:GET/authorize?response_type=code&client_id=s6BhdRkqt3&state=xyz &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2FcbHTTP/1.1Host: 授權(quán)服務(wù)器驗(yàn)證請(qǐng)求以確保所有必需的參數(shù)存在且有效。如果請(qǐng)求是有效的,授權(quán)服務(wù)器驗(yàn)證資源的所有者,并獲得一個(gè)授權(quán)決定(通過(guò)要求資源所有者或通過(guò)其他手段建立審批)。當(dāng)一個(gè)決定建立時(shí),使用一個(gè)HTTP重定向回答,或者用其它通過(guò)用戶(hù)代理的方法將資源所有者引導(dǎo)到構(gòu)造好的URI.4.1.2 授權(quán)應(yīng)答如果資源所有者授權(quán)給訪問(wèn)請(qǐng)求,授權(quán)服務(wù)器發(fā)布一個(gè)授權(quán)碼然后傳送它給客戶(hù)端,授權(quán)碼是增加下面的參數(shù)到重定向URI查詢(xún)組件,使用application/x-www-form-urlencoded格式。CodeREQUIRED. 授權(quán)服務(wù)器產(chǎn)生授權(quán)碼,授權(quán)碼必須在分發(fā)后不久就到期,以減輕泄露的風(fēng)險(xiǎn)。推薦一個(gè)授權(quán)碼最大的壽命是10分鐘。Client必須不能使用授權(quán)碼超過(guò)一次。日過(guò)一個(gè)授權(quán)碼被使用超過(guò)一次,授權(quán)服務(wù)器必須拒絕請(qǐng)求,然后嘗試撤銷(xiāo)前面所有基于那個(gè)授權(quán)碼分發(fā)的令牌。授權(quán)碼是綁定到客戶(hù)標(biāo)示符和重定向URI。StateREQUIRED 如果“state“參數(shù)存在于客戶(hù)端授權(quán)請(qǐng)求中。從客戶(hù)端收到確切的值。比如,授權(quán)服務(wù)器通過(guò)發(fā)送下面的HTTP應(yīng)答來(lái)重定向用戶(hù)代理。HTTP/1.1 302 FoundLocation: /cb?code=SplxlOBeZQQYbYS6WxSbIA&state=xyzClient應(yīng)該忽視不認(rèn)識(shí)應(yīng)答參數(shù)。授權(quán)碼字符串的大小在本規(guī)范是未定義的。Client應(yīng)該避免對(duì)碼值的大小做假設(shè)。授權(quán)服務(wù)器應(yīng)該將任何它發(fā)布值的大小歸檔。 錯(cuò)誤應(yīng)答如果由于丟失,失效,或者重定向URI不匹配而請(qǐng)求失敗,或者如果所提供的客戶(hù)端標(biāo)示符是無(wú)效的,授權(quán)服務(wù)器應(yīng)該通知資源服務(wù)器錯(cuò)誤信息,一定不能自動(dòng)的重定向用戶(hù)代理到無(wú)效的重定向URI。如果資源所有者拒絕訪問(wèn)請(qǐng)求,或者如果請(qǐng)求失敗是有別于丟失或者無(wú)效重定向URI的原因,授權(quán)服務(wù)器通過(guò)增加下面的參數(shù)到重定向URI參訓(xùn)組件,來(lái)通知client,使用application/x-www-form-urlencoded格式:errorREQUIRED 來(lái)自以下的簡(jiǎn)單錯(cuò)誤碼: invalid_request : 請(qǐng)求丟失了必要的參數(shù),包括一個(gè)不被支持的參數(shù)值,或者格式不正確unauthorized_client : client 沒(méi)有用這種方法被授權(quán)去請(qǐng)求授權(quán)碼。access_denied :資源所有者或者授權(quán)服務(wù)器拒絕請(qǐng)求。Unsupported_response_type :資源服務(wù)器不支持用這種方法獲得一個(gè)授權(quán)碼。Invalid_scope :請(qǐng)求范圍無(wú)效,位置或者不符合格式。server_error : 授權(quán)服務(wù)器遇到意外情況無(wú)法履行請(qǐng)求。 Temporarily_unavailable: 授權(quán)服務(wù)器由于暫時(shí)過(guò)載或者服務(wù)器維護(hù)現(xiàn)在不能處理請(qǐng)求。error_description OPTIONAL. 一個(gè)提供更多信息的人類(lèi)可讀的UTF-8 編碼文本,用于幫助客戶(hù)端開(kāi)發(fā),使我們了解所發(fā)生的錯(cuò)誤error_uri OPTIONAL 提供識(shí)別有關(guān)錯(cuò)誤信息,供人參閱的網(wǎng)頁(yè)URI。提供客戶(hù)端開(kāi)發(fā)和有關(guān)錯(cuò)誤的其他信息state REQUIRED 如果一個(gè)有效的“state“參數(shù)存在于客戶(hù)授權(quán)請(qǐng)求。從客戶(hù)端接收到一個(gè)確切的值例如:授權(quán)服務(wù)器通過(guò)發(fā)送下面HTTP應(yīng)帶重定向用戶(hù)代理:HTTP/1.1 302 FoundLocation: /cb?error=access_denied&state=xyz4.1.3 訪問(wèn)令牌請(qǐng)求Client發(fā)出通過(guò)在HTTP請(qǐng)求實(shí)體文本中增加下面參數(shù)來(lái)請(qǐng)求令牌端點(diǎn),使用application/x-www-form-urlencoded格式。grand_type REQUIRED. “authorization_code”必須被賦值。code REQUIRED. 從授權(quán)服務(wù)器接受的授權(quán)碼。redirect_uri REQUIRED. 如果“redirect_uri“參數(shù)被包含在授權(quán)請(qǐng)求中,如4.1.1所述,它的值必須相同。如果client 類(lèi)型是秘密的或者client 被分發(fā)了client 憑證(或者假設(shè)另外授權(quán)求), client 必須和授權(quán)服務(wù)器驗(yàn)證身份,如 3.2.1.節(jié)所述。 例如,client 按照傳輸層安全性做出如下HTTP 請(qǐng)求: POST /token HTTP/1.1 Host: Authorization: BasicczZCaGRSa3F0MzpnWDFmQmF0M2JW Content-Type:application/x-www-form-urlencoded;charset=UTF-8grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb授權(quán)服務(wù)器必須:(a)請(qǐng)求客戶(hù)驗(yàn)證秘密客戶(hù)或者每個(gè)被分發(fā)了憑證(或者其它授權(quán)需求)的用戶(hù)(b)如果client 驗(yàn)證被包括就去驗(yàn)證客戶(hù)端,然后確保授權(quán)碼被分發(fā)給授權(quán)client(c)確認(rèn)授權(quán)碼是有效的(d)確?!皉edirect_uri”參數(shù)是存在的,如果“redirect_uri”參數(shù)被包括在初始的授權(quán)請(qǐng)求(4.1.1所述),如果被包含,確保他們的值是相同的。4.1.4 訪問(wèn)令牌應(yīng)答如果訪問(wèn)令牌請(qǐng)求是有效的和授權(quán)的,授權(quán)服務(wù)器分發(fā)一個(gè)訪問(wèn)令牌和可選的刷新令牌(5.1所述)。如果請(qǐng)求客戶(hù)端授權(quán)失敗或者失效,授權(quán)服務(wù)器返回一個(gè)錯(cuò)誤應(yīng)答,如5.2所述一個(gè)成功應(yīng)答的例子:HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8Cache-Control: no-storePragma: no-cacheaccess_token:2YotnFZFEjr1zCsicMWpAA,token_type:example,expires_in:3600,refresh_token:tGzv3JOkF0XG5Qx2TlKWIA,example_parameter:example_value4.2 隱式授權(quán)隱式授權(quán)類(lèi)型被用來(lái)獲得訪問(wèn)令牌(它不支持刷新令牌的發(fā)行),隱式授權(quán)非常適合懂得操作特定重定向URI的公共客戶(hù)端。這些客戶(hù)端通常用一個(gè)例如JavaScript的腳本語(yǔ)言在瀏覽器中實(shí)現(xiàn)。作為一個(gè)基于重定向的流,client必須具有與資源所有者的用戶(hù)代理(通常是一個(gè)web瀏覽器)交互的能力,還要具有從授權(quán)服務(wù)器接受向內(nèi)請(qǐng)求(通過(guò)重定向)的能力。不像授權(quán)碼授權(quán)類(lèi)型,授權(quán)碼授權(quán)類(lèi)型中,客戶(hù)端為了授權(quán)和訪問(wèn)令牌做出分隔的請(qǐng)求,但在隱式授權(quán)中,client接受訪問(wèn)令牌作為授權(quán)請(qǐng)求的結(jié)果。隱式授權(quán)類(lèi)型不包括客戶(hù)身份驗(yàn)證,它依賴(lài)于資源所有者和注冊(cè)過(guò)的重定向URI的存在。因?yàn)樵L問(wèn)令牌被編碼到了重定向URI,它可能被曝光給資源所有者和駐留在磁盤(pán)的應(yīng)用程序。上圖包括了以下步驟:(A)client啟動(dòng)流程是從引導(dǎo)資源所有者的用戶(hù)代理到授權(quán)端點(diǎn)開(kāi)始的。Client包括他的客戶(hù)端標(biāo)示符,請(qǐng)求的范圍,本地的狀態(tài)和一個(gè)重定向RUI,一旦訪問(wèn)被授權(quán)(或者決絕)授權(quán)服務(wù)器將把用戶(hù)代理送回。(B)授權(quán)服務(wù)器認(rèn)證資源所有者(通過(guò)用戶(hù)代理)。無(wú)論資源所有者授權(quán)或者拒絕,授權(quán)服務(wù)器建立客戶(hù)端的訪問(wèn)請(qǐng)求。(C)假設(shè)資源所有者授權(quán)訪問(wèn),授權(quán)服務(wù)器使用早起提供的重定向URI將用戶(hù)代理重定向回client。重定向URI包含在訪問(wèn)令牌的URI片段里。(D)用戶(hù)代理通過(guò)做出對(duì)web托管的客戶(hù)端資源的請(qǐng)求,跟著重定向的指示??蛻?hù)端保留本地的片段信息。(E)Web托管客戶(hù)端資源返回一個(gè)web頁(yè)面(通常是一個(gè)嵌入了腳本的HTML文檔),能訪問(wèn)全重定向URI包括保留在用戶(hù)代理的URI,提取片段中的訪問(wèn)令牌(和其它參數(shù))(F)用戶(hù)代理在本地執(zhí)行web托管客戶(hù)端資源的腳本,提取訪問(wèn)指令然后提交給client。4.2.1 授權(quán)請(qǐng)求Client通過(guò)增加下面的參數(shù)到授權(quán)端點(diǎn)URI的查詢(xún)組件來(lái)構(gòu)造請(qǐng)求URI,并使用application/x-www-form-urlencoded格式:Response_typeREQUIRED. “token“必須被賦值。Client_idREQUIRED. 客戶(hù)端標(biāo)示符,如2.2所述。Redirect_uriOPTIONAL, 如3.1.2所述。ScopeOPTIONAL, 訪問(wèn)請(qǐng)求的范圍,3.3節(jié)所述。stateRECOMMENDED. 客戶(hù)端的一個(gè)不透明的值用來(lái)保留請(qǐng)求和回叫的狀態(tài)。授權(quán)服務(wù)器包括這個(gè)值當(dāng)重定向用戶(hù)代理回client時(shí)。參數(shù)應(yīng)該被用于防止夸站點(diǎn)訪問(wèn)片段。如10.12所述。Client使用一個(gè)HTTP重定向應(yīng)答來(lái)引導(dǎo)資源所有者到構(gòu)造URI,或者通過(guò)其他方式提供給他的用戶(hù)代理。例如,client引導(dǎo)用戶(hù)代理使用傳輸層安全性去做出如下HTTP請(qǐng)求:GET/authorize?response_type=token&client_id=s6BhdRkqt3&state=xyz&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb HTTP/1.1Host: 授權(quán)服務(wù)器驗(yàn)證請(qǐng)求以確保所有的必須的參數(shù)是存在的且有效地。授權(quán)服務(wù)器必須驗(yàn)證重定向URI,這個(gè)URI回重定向訪問(wèn)令牌與一個(gè)客戶(hù)端注冊(cè)過(guò)的重定向URI匹配。如果請(qǐng)求有效,授權(quán)服務(wù)器認(rèn)真資源所有者,獲得一個(gè)授權(quán)決定(通過(guò)請(qǐng)求資源所有者或者通過(guò)其他方法建立審批)。當(dāng)一個(gè)決定建立時(shí),授權(quán)服務(wù)器定向用戶(hù)代理到提供的客戶(hù)重定向URI,這是通過(guò)一個(gè)HTTP重定向應(yīng)答或者用其他方法提供給他的用戶(hù)代理。4.2.2 訪問(wèn)令牌應(yīng)答如果資源所有者授權(quán)一個(gè)訪問(wèn)請(qǐng)求,授權(quán)服務(wù)器分發(fā)一個(gè)訪問(wèn)令牌然后傳送它給客戶(hù)端,通過(guò)增加以下參數(shù)到重定向URI的片段組
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025停車(chē)場(chǎng)經(jīng)營(yíng)權(quán)轉(zhuǎn)讓合同樣本
- 脛骨骨折護(hù)理
- 2025年人工肝知識(shí)試題
- 隱匿性冠心病的臨床護(hù)理
- 電氣點(diǎn)檢培訓(xùn)體系構(gòu)建
- 耳石癥個(gè)案護(hù)理
- 轉(zhuǎn)移性小腸腫瘤的臨床護(hù)理
- 小學(xué)語(yǔ)文教師試用期轉(zhuǎn)正工作總結(jié)模版
- 面試技巧完整課件
- 循證醫(yī)學(xué)實(shí)施難點(diǎn)與對(duì)策
- DL-T-5743-2016水電水利工程土木合成材料施工規(guī)范
- 湖南省雅禮中學(xué)高三4月考-新高考數(shù)學(xué)試題試卷
- 2024火電機(jī)組金屬監(jiān)督工作任務(wù)表
- 抗凝藥術(shù)前停藥指南
- 中國(guó)血脂管理指南(基層版2024年)
- JTS-167-2-2009重力式碼頭設(shè)計(jì)與施工規(guī)范
- 阿替普酶的藥理作用及應(yīng)用
- 2024年學(xué)生團(tuán)干部技能大賽考試題庫(kù)350題(含答案)
- 走進(jìn)歌劇世界智慧樹(shù)知到期末考試答案章節(jié)答案2024年北京航空航天大學(xué)
- (正式版)YST 1682-2024 鎂冶煉行業(yè)綠色工廠評(píng)價(jià)要求
- 口腔實(shí)習(xí)生培訓(xùn)
評(píng)論
0/150
提交評(píng)論