oAuth2 客戶端授權(quán)模式

概述

客戶端必須得到用戶的授權(quán)(authorization grant),才能獲得令牌(access token)忙上。oAuth 2.0 定義了四種授權(quán)方式调俘。

  • implicit:簡化模式辜窑,不推薦使用
  • authorization code:授權(quán)碼模式
  • resource owner password credentials:密碼模式
  • client credentials:客戶端模式

簡化模式

簡化模式適用于純靜態(tài)頁面應(yīng)用奖恰。所謂純靜態(tài)頁面應(yīng)用吊趾,也就是應(yīng)用沒有在服務(wù)器上執(zhí)行代碼的權(quán)限(通常是把代碼托管在別人的服務(wù)器上),只有前端 JS 代碼的控制權(quán)瑟啃。

這種場景下论泛,應(yīng)用是沒有持久化存儲的能力的。因此蛹屿,按照 oAuth2.0 的規(guī)定屁奏,這種應(yīng)用是拿不到 Refresh Token 的。其整個(gè)授權(quán)流程如下:


該模式下蜡峰,access_token容易泄露且不可刷新

授權(quán)碼模式

授權(quán)碼模式適用于有自己的服務(wù)器的應(yīng)用了袁,它是一個(gè)一次性的臨時(shí)憑證,用來換取 access_tokenrefresh_token湿颅。認(rèn)證服務(wù)器提供了一個(gè)類似這樣的接口:

https://www.xxm.com/exchange?code=&client_id=&client_secret=

<p>需要傳入 code载绿、client_id 以及 client_secret。驗(yàn)證通過后油航,返回 access_tokenrefresh_token崭庸。一旦換取成功,code 立即作廢谊囚,不能再使用第二次怕享。流程圖如下:</p>

這個(gè) code 的作用是保護(hù) token 的安全性。簡單模式下镰踏,token 是不安全的函筋。這是因?yàn)樵诘?4 步當(dāng)中直接把 token 返回給應(yīng)用。而這一步容易被攔截奠伪、竊聽跌帐。引入了 code 之后,即使攻擊者能夠竊取到 code绊率,但是由于他無法獲得應(yīng)用保存在服務(wù)器的 client_secret谨敛,因此也無法通過 code 換取 token。而第 5 步滤否,為什么不容易被攔截脸狸、竊聽呢?這是因?yàn)槊臧常紫却都祝@是一個(gè)從服務(wù)器到服務(wù)器的訪問,黑客比較難捕捉到欲芹;其次蜜葱,這個(gè)請求通常要求是 https 的實(shí)現(xiàn)。即使能竊聽到數(shù)據(jù)包也無法解析出內(nèi)容耀石。

有了這個(gè) code牵囤,token 的安全性大大提高。因此滞伟,oAuth2.0 鼓勵使用這種方式進(jìn)行授權(quán)揭鳞,而簡單模式則是在不得已情況下才會使用。

密碼模式

密碼模式中梆奈,用戶向客戶端提供自己的用戶名和密碼野崇。客戶端使用這些信息亩钟,向 "服務(wù)商提供商" 索要授權(quán)乓梨。在這種模式中鳖轰,用戶必須把自己的密碼給客戶端,但是客戶端不得儲存密碼扶镀。這通常用在用戶對客戶端高度信任的情況下蕴侣,比如客戶端是操作系統(tǒng)的一部分。

一個(gè)典型的例子是同一個(gè)企業(yè)內(nèi)部的不同產(chǎn)品要使用本企業(yè)的 oAuth2.0 體系臭觉。在有些情況下昆雀,產(chǎn)品希望能夠定制化授權(quán)頁面。由于是同個(gè)企業(yè)蝠筑,不需要向用戶展示“xxx將獲取以下權(quán)限”等字樣并詢問用戶的授權(quán)意向狞膘,而只需進(jìn)行用戶的身份認(rèn)證即可。這個(gè)時(shí)候什乙,由具體的產(chǎn)品團(tuán)隊(duì)開發(fā)定制化的授權(quán)界面挽封,接收用戶輸入賬號密碼,并直接傳遞給鑒權(quán)服務(wù)器進(jìn)行授權(quán)即可臣镣。


有一點(diǎn)需要特別注意的是场仲,在第 2 步中,認(rèn)證服務(wù)器需要對客戶端的身份進(jìn)行驗(yàn)證退疫,確保是受信任的客戶端渠缕。

客戶端模式

如果信任關(guān)系再進(jìn)一步,或者調(diào)用者是一個(gè)后端的模塊褒繁,沒有用戶界面的時(shí)候亦鳞,可以使用客戶端模式。鑒權(quán)服務(wù)器直接對客戶端進(jìn)行身份驗(yàn)證棒坏,驗(yàn)證通過后燕差,返回 token。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坝冕,一起剝皮案震驚了整個(gè)濱河市徒探,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌喂窟,老刑警劉巖测暗,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異磨澡,居然都是意外死亡碗啄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門稳摄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稚字,“玉大人,你說我怎么就攤上這事〉瑁” “怎么了瘫想?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長昌讲。 經(jīng)常有香客問我国夜,道長,這世上最難降的妖魔是什么剧蚣? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任支竹,我火速辦了婚禮旋廷,結(jié)果婚禮上鸠按,老公的妹妹穿的比我還像新娘。我一直安慰自己饶碘,他們只是感情好目尖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扎运,像睡著了一般瑟曲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上豪治,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天洞拨,我揣著相機(jī)與錄音,去河邊找鬼负拟。 笑死烦衣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的掩浙。 我是一名探鬼主播花吟,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼厨姚!你這毒婦竟也來了衅澈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谬墙,失蹤者是張志新(化名)和其女友劉穎今布,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拭抬,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡险耀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了玖喘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甩牺。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖累奈,靈堂內(nèi)的尸體忽然破棺而出贬派,到底是詐尸還是另有隱情急但,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布搞乏,位于F島的核電站波桩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏请敦。R本人自食惡果不足惜镐躲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侍筛。 院中可真熱鬧萤皂,春花似錦、人聲如沸匣椰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽禽笑。三九已至入录,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間佳镜,已是汗流浹背僚稿。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蟀伸,地道東北人蚀同。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像望蜡,于是被迫代替她去往敵國和親唤崭。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355