Oauth2(3)授權(quán)端點(diǎn)

授權(quán)過程采用兩種授權(quán)端點(diǎn):

授權(quán)端點(diǎn)--客戶端通過用戶代理重定向從資源擁有者以獲得授權(quán)

令牌端點(diǎn)--客戶端使用授權(quán)許可交換訪問令牌,通常伴有客戶端認(rèn)證

以及另一種客戶端端點(diǎn)

重定向端點(diǎn)--授權(quán)服務(wù)器用于通過資源所有者用戶代理向客戶端返回含有授權(quán)憑據(jù)的響應(yīng)终佛。

不是每個(gè)授權(quán)類型都用所有的端點(diǎn)隘世,擴(kuò)展的授權(quán)類型可能會(huì)定義附加的端點(diǎn)

1授權(quán)端點(diǎn)

授權(quán)端點(diǎn)用于和資源擁有者交互并且獲取一個(gè)授權(quán)許可松嘶。授權(quán)服務(wù)器首先必須驗(yàn)證資源擁有者身份念恍。但該規(guī)范并為定義授權(quán)服務(wù)器驗(yàn)證資源擁有者的方式(比如賬號(hào)密碼犁功,session cookies)衡未。

獲取授權(quán)端點(diǎn)位置同樣未定義尸执。

端點(diǎn)URI可能包含application/x-www-form-urlencoded格式的查詢部分,添加額外查詢參數(shù)時(shí)必須保留該部分缓醋。端點(diǎn)URI一定不能包含fragment部分如失。

由于向授權(quán)端點(diǎn)的請(qǐng)求會(huì)引起用于憑據(jù)的明文傳輸,因此授權(quán)服務(wù)器要求在向授權(quán)端點(diǎn)發(fā)送請(qǐng)求時(shí)必須使用TLS送粱。

授權(quán)服務(wù)器對(duì)于授權(quán)端點(diǎn)必須支持使用HTTP
GET方法岖常,可能會(huì)支持POST。

請(qǐng)求中無值參數(shù)和未識(shí)別參數(shù)必須被忽略葫督。請(qǐng)求和響應(yīng)參數(shù)不應(yīng)該被包含超過一次竭鞍。

1.1響應(yīng)類型

授權(quán)端點(diǎn)用于授權(quán)碼類型和隱式授權(quán)流程¢暇担客戶端使用下列參數(shù)通知授權(quán)服務(wù)器期望的許可類型:

response_type

必須包含偎快,值必須是code或者token或者注冊(cè)擴(kuò)展值

擴(kuò)展響應(yīng)類型可能包含空格分割的列表,這種復(fù)雜相應(yīng)類型由他們自己定義洽胶。

如果一個(gè)授權(quán)請(qǐng)求沒有response_type參數(shù)晒夹,或者不能理解相應(yīng)類型,授權(quán)服務(wù)器必須返回error response

1.2重定向端點(diǎn)

完成與資源擁有者交互后姊氓,授權(quán)服務(wù)器引導(dǎo)資源擁有者的用戶代理返回客戶端丐怯。授權(quán)服務(wù)器重定向用戶代理到在客戶端注冊(cè)時(shí)或者發(fā)出授權(quán)請(qǐng)求時(shí)預(yù)先建立的客戶端重定向端點(diǎn)。

重定向端點(diǎn)URI必須是絕對(duì)URI翔横。端點(diǎn)URI可能包含application/x-www-form-urlencoded格式的查詢體读跷,當(dāng)添加額外查詢參數(shù)時(shí)必須保留。端點(diǎn)URI一定不能包含fragment部分禾唁。

1.2.1端點(diǎn)請(qǐng)求的機(jī)密性

當(dāng)響應(yīng)類型是code或者token時(shí)或者重定向請(qǐng)求將導(dǎo)致敏感憑據(jù)通過開放網(wǎng)絡(luò)傳輸時(shí)效览,重定向端點(diǎn)需要使用TLS无切。

缺乏傳輸層安全可能對(duì)客戶端及它被授權(quán)訪問的受保護(hù)資源的安全具有嚴(yán)重影響。當(dāng)授權(quán)過程用作一種客戶端委托的對(duì)最終用戶認(rèn)證(例如丐枉,第三方登錄服務(wù))的形式時(shí)哆键,使用傳輸層安全尤其關(guān)鍵。

1.2.2注冊(cè)要求

授權(quán)服務(wù)器必須要求下列客戶端注冊(cè)其重定向客戶端“

公開客戶端

使用隱式授權(quán)類型的機(jī)密客戶端

授權(quán)服務(wù)器應(yīng)該要求所有的客戶端在使用授權(quán)端點(diǎn)前注冊(cè)重定向端點(diǎn)

授權(quán)服務(wù)器應(yīng)該要求客戶端提供完整的重定向URI瘦锹,如果不能注冊(cè)完整重定向URI籍嘹,那么應(yīng)該要求注冊(cè)URI scheme,authority和path弯院。(請(qǐng)求授權(quán)時(shí)允許客戶端動(dòng)態(tài)變更查詢部分)

授權(quán)服務(wù)器可能允許客戶端注冊(cè)多個(gè)重定向端點(diǎn)辱士。

缺少重定向URI注冊(cè)的要求,可能使攻擊者將授權(quán)端點(diǎn)用作自由重定向端點(diǎn)抽兆。

1.2.3動(dòng)態(tài)配置

如果注冊(cè)多個(gè)重定向URI或者如果只有部分重定向URI被注冊(cè)或者沒有注冊(cè)重定向URI识补。客戶端都必須使用“redirect_uri”請(qǐng)求參數(shù)在授權(quán)請(qǐng)求中包含重定向URI辫红。

當(dāng)授權(quán)請(qǐng)求包含了一個(gè)重定向URI凭涂,授權(quán)服務(wù)器必須比較和匹配至少一個(gè)已注冊(cè)URI。

1.2.4無效端點(diǎn)

如果由于缺失贴妻、無效或不匹配的重定向URI而驗(yàn)證失敗切油,授權(quán)服務(wù)器應(yīng)該通知資源所有者該錯(cuò)誤且不能向無效的重定向URI自動(dòng)重定向用戶代理。

1.2.5端點(diǎn)內(nèi)容

向客戶端端點(diǎn)的重定向請(qǐng)求通常會(huì)引起由用戶代理處理的HTML文檔響應(yīng)名惩。如果HTML響應(yīng)直接作為重定向請(qǐng)求的服務(wù)結(jié)果澎胡,任何包含在HTML文檔中的腳本將執(zhí)行,并具有對(duì)重定向URI和其包含的憑據(jù)的完全訪問權(quán)限娩鹉。

客戶端不應(yīng)該在重定向端點(diǎn)的響應(yīng)中包含任何第三方的腳本(例如攻谁,第三方分析、社交插件弯予、廣告網(wǎng)絡(luò))戚宦。相反,它應(yīng)該從URI中提取憑據(jù)并向另一個(gè)端點(diǎn)重定向用戶代理而不暴露憑據(jù)(在URI中或其他地方)锈嫩。如果包含第三方腳本受楼,客戶端必須確保它自己的腳本(用于從URI中提取憑據(jù)并從URI中刪除)將首先執(zhí)行。

2.token端點(diǎn)

token端點(diǎn)用于客戶端通過展示授權(quán)許可或者可刷新token以獲取訪問token呼寸。token端點(diǎn)被用于除了隱式授權(quán)的其他所有方式艳汽。

這意味著客戶端獲取token端點(diǎn)的位置超出說明的范圍,但是通常會(huì)在服務(wù)文檔中提供对雪。

端點(diǎn)URI可能包含application/x-www-form-urlencoded格式的查詢請(qǐng)求部分河狐,當(dāng)添加額外查詢參數(shù)時(shí)也必須保留。端點(diǎn)URI一定不能包含fragment部分。

由于對(duì)token端點(diǎn)的請(qǐng)求會(huì)導(dǎo)致明文憑據(jù)的傳輸甚牲,因此必須采用TLS义郑。

客戶端請(qǐng)求token時(shí)必須使用POST方法蝶柿。

請(qǐng)求中無值參數(shù)和未識(shí)別參數(shù)必須被忽略丈钙。請(qǐng)求和響應(yīng)參數(shù)不應(yīng)該被包含超過一次。

2.1客戶端認(rèn)證

機(jī)密客戶端或者其他被辦法客戶端憑據(jù)的客戶端在請(qǐng)求token端點(diǎn)時(shí)必須與授權(quán)服務(wù)器進(jìn)行驗(yàn)證交汤〕猓客戶端驗(yàn)證用于:

執(zhí)行刷新token以及授權(quán)碼與客戶端的綁定。當(dāng)授權(quán)碼在不安全通道上向重定向端點(diǎn)傳輸時(shí)芙扎,或者
當(dāng)重定向URI沒有被完全注冊(cè)時(shí)星岗,客戶端身份驗(yàn)證是關(guān)鍵的。

通過禁用客戶端或者改變其憑據(jù)恢復(fù)一個(gè)被盜用的客戶端戒洼,因此組織了攻擊者濫用被盜的刷新令牌俏橘。改變客戶端憑據(jù)顯然快于撤銷所有的刷新令牌。

實(shí)現(xiàn)認(rèn)證管理的最佳實(shí)踐圈浇,要求定期憑證輪轉(zhuǎn)寥掐。輪轉(zhuǎn)一整套刷新令牌可能是艱巨的,而輪轉(zhuǎn)單組客戶端憑據(jù)顯然更容易磷蜀。

向token端點(diǎn)發(fā)送請(qǐng)求時(shí)召耘,一個(gè)客戶端可能使用client_id請(qǐng)求參數(shù)用來標(biāo)志自身。向令牌端點(diǎn)的“authorization_code”和“grant_type”請(qǐng)求中褐隆,未經(jīng)身份驗(yàn)證的客戶端必須發(fā)送它的“client_id”污它,以防止自己無意中接受了本打算給具有另一個(gè)“client_id”的客戶端的代碼。這保護(hù)了客戶端免于被替換認(rèn)證碼庶弃。

3.訪問令牌范圍
認(rèn)證和令牌端點(diǎn)允許客戶端通過scope請(qǐng)求參數(shù)指定訪問請(qǐng)求的范圍衫贬。反過來,認(rèn)證服務(wù)器使用scope響應(yīng)參數(shù)來通知客戶端訪問令牌被頒發(fā)的范圍歇攻。

scope請(qǐng)求參數(shù)用空格分割固惯,大小寫敏感。該string由授權(quán)服務(wù)器定義掉伏。如果值包含了多個(gè)空格分割的字符串缝呕,他們的順序并不重要,并且每個(gè)string為請(qǐng)求區(qū)域附加了一個(gè)額外的訪問范圍斧散。
scope= scope-token *( SP scope-token )
scope-token = 1*( %x21 / %x23-5B / %x5D-7E )

授權(quán)服務(wù)器基于服務(wù)器策略或者資源擁有者的指令可能完全或部分的忽略客戶端的scope請(qǐng)求供常。如果頒發(fā)的訪問令牌范圍與客戶端的請(qǐng)求不同,服務(wù)器必須包含scope響應(yīng)參數(shù)通知客戶端實(shí)際的授權(quán)范圍鸡捐。

如果客戶端在請(qǐng)求授權(quán)時(shí)忽略scope請(qǐng)求栈暇,授權(quán)服務(wù)器必須要么使用預(yù)定義的默認(rèn)值或者使請(qǐng)求失敗以指明無效范圍。授權(quán)服務(wù)器應(yīng)該在文檔說明scope需求和默認(rèn)值箍镜。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末源祈,一起剝皮案震驚了整個(gè)濱河市煎源,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌香缺,老刑警劉巖手销,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異图张,居然都是意外死亡锋拖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門祸轮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來兽埃,“玉大人,你說我怎么就攤上這事适袜”恚” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵苦酱,是天一觀的道長(zhǎng)售貌。 經(jīng)常有香客問我,道長(zhǎng)躏啰,這世上最難降的妖魔是什么趁矾? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮给僵,結(jié)果婚禮上毫捣,老公的妹妹穿的比我還像新娘。我一直安慰自己帝际,他們只是感情好蔓同,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蹲诀,像睡著了一般斑粱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上脯爪,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天则北,我揣著相機(jī)與錄音,去河邊找鬼痕慢。 笑死尚揣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的掖举。 我是一名探鬼主播快骗,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了方篮?” 一聲冷哼從身側(cè)響起名秀,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎藕溅,沒想到半個(gè)月后匕得,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜈垮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年耗跛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了裕照。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片攒发。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖晋南,靈堂內(nèi)的尸體忽然破棺而出惠猿,到底是詐尸還是另有隱情,我是刑警寧澤负间,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布偶妖,位于F島的核電站,受9級(jí)特大地震影響政溃,放射性物質(zhì)發(fā)生泄漏趾访。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一董虱、第九天 我趴在偏房一處隱蔽的房頂上張望扼鞋。 院中可真熱鬧,春花似錦愤诱、人聲如沸云头。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽溃槐。三九已至,卻和暖如春科吭,著一層夾襖步出監(jiān)牢的瞬間昏滴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工对人, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谣殊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓规伐,卻偏偏與公主長(zhǎng)得像蟹倾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理鲜棠,服務(wù)發(fā)現(xiàn)肌厨,斷路器,智...
    卡卡羅2017閱讀 134,626評(píng)論 18 139
  • 本文以一種簡(jiǎn)化的格式描述OAuth 2.0 豁陆,以幫助開發(fā)人員和服務(wù)提供者實(shí)現(xiàn)該協(xié)議柑爸。 The OAuth 2 sp...
    KennethChen93閱讀 4,146評(píng)論 1 11
  • API定義規(guī)范 本規(guī)范設(shè)計(jì)基于如下使用場(chǎng)景: 請(qǐng)求頻率不是非常高:如果產(chǎn)品的使用周期內(nèi)請(qǐng)求頻率非常高,建議使用雙通...
    有涯逐無涯閱讀 2,521評(píng)論 0 6
  • 一盒音、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,333評(píng)論 6 152
  • 今天忙里偷閑祥诽,又拾起《仙劍云之凡》來看譬圣。 雨柔感概自己的生命短暫,無法與云凡共度一生雄坪,于是不敢奢求愛情厘熟,面露不悅地...
    悠然遇見南山閱讀 482評(píng)論 0 1