您好,登錄后才能下訂單哦!
OAuth3 的概念
OAuth是一個(gè)關(guān)于授權(quán)的開(kāi)放網(wǎng)絡(luò)標(biāo)準(zhǔn),OAuth3是其2.0版本。
它規(guī)定了四種操作流程(授權(quán)模式)來(lái)確保安全
應(yīng)用場(chǎng)景有第三方應(yīng)用的接入、微服務(wù)鑒權(quán)互信、接入第三方平臺(tái)、第一方密碼登錄等
Java王國(guó)中Spring Security也對(duì)OAuth3標(biāo)準(zhǔn)進(jìn)行了實(shí)現(xiàn)。
OAuth3授權(quán)模式
OAuth3定義了四種授權(quán)模式(授權(quán)流程)來(lái)對(duì)資源的訪(fǎng)問(wèn)進(jìn)行控制
無(wú)論哪個(gè)模式(流程)都擁有三個(gè)必要角色:客戶(hù)端
、授權(quán)服務(wù)器
、資源服務(wù)器
,有的還有用戶(hù)(資源擁有者)
,下面簡(jiǎn)單介紹下授權(quán)流程
授權(quán)碼模式(Authorization Code Grant)
授權(quán)碼模式是OAuth3目前最安全最復(fù)雜的授權(quán)流程,先放一張圖,稍做解釋
如上圖,我們可以看到此流程可大致分為三大部分
整體上來(lái)說(shuō),可以用一句話(huà)概括授權(quán)碼模式授權(quán)流程
客戶(hù)端換取授權(quán)碼,客戶(hù)端使用授權(quán)碼換token,客戶(hù)端使用token訪(fǎng)問(wèn)資源
接下來(lái)對(duì)這三部分進(jìn)行一些說(shuō)明 :
前提條件:
Client Side
客戶(hù)端換取授權(quán)碼
這個(gè)客戶(hù)端可以是瀏覽器,
client_id + client_secret + 授權(quán)模式標(biāo)識(shí)(grant_type) + 回調(diào)地址(redirect_uri)
拼成url訪(fǎng)問(wèn)授權(quán)服務(wù)器授權(quán)端點(diǎn)
用戶(hù)登錄
(此時(shí)用戶(hù)提交的密碼等直接發(fā)到授權(quán)服務(wù)器,進(jìn)行校驗(yàn))用戶(hù)授權(quán)
完成返回授權(quán)碼到回調(diào)地址
Server Side
客戶(hù)端使用授權(quán)碼換token
Check Access Token
客戶(hù)端使用token訪(fǎng)問(wèn)資源
這里的說(shuō)明省去了一些參數(shù),如scope(請(qǐng)求token的作用域)、state(用于保證請(qǐng)求不被CSRF)、redirect_uri(授權(quán)服務(wù)器回調(diào)uri),先理解概念,實(shí)現(xiàn)的時(shí)候再去要求
隱式授權(quán)模式(Implicit Grant)
隱式授權(quán)模式大致可分為兩部分:
用一句話(huà)概括隱式授權(quán)模式授權(quán)流程
客戶(hù)端讓用戶(hù)登錄授權(quán)服務(wù)器換token,客戶(hù)端使用token訪(fǎng)問(wèn)資源
Client Side
客戶(hù)端讓用戶(hù)登錄授權(quán)服務(wù)器換token
client_id + 授權(quán)模式標(biāo)識(shí)(grant_type)+ 回調(diào)地址(redirect_uri)
拼成url訪(fǎng)問(wèn)授權(quán)服務(wù)器授權(quán)端點(diǎn)
訪(fǎng)問(wèn)回調(diào)地址
返回token給客戶(hù)端Check Access Token
客戶(hù)端使用token訪(fǎng)問(wèn)資源
密碼模式(Resource Owner Password Credentials Grant)
密碼模式大體上也分為兩部分:
一句話(huà)概括用戶(hù)名密碼模式流程:
用戶(hù)在客戶(hù)端提交賬號(hào)密碼換token,客戶(hù)端使用token訪(fǎng)問(wèn)資源
Client Side
用戶(hù)在客戶(hù)端提交賬號(hào)密碼換token
Check Access Token
客戶(hù)端使用token訪(fǎng)問(wèn)資源
客戶(hù)端模式(Client Credentials Grant)
客戶(hù)端模式大體上分為兩部分:
一句話(huà)概括客戶(hù)端模式授權(quán)流程:
客戶(hù)端使用自己的標(biāo)識(shí)換token,客戶(hù)端使用token訪(fǎng)問(wèn)資源
Server Side
客戶(hù)端使用自己的標(biāo)識(shí)換token
頒發(fā)token端點(diǎn)
Check Access Token
客戶(hù)端使用token訪(fǎng)問(wèn)資源
OAuth3授權(quán)模式的選型
考慮到授權(quán)場(chǎng)景的多樣性,可以參考以下兩種選型方式
按授權(quán)需要的多端情況
按客戶(hù)端類(lèi)型與所有者
后記
學(xué)習(xí)OAuth3有一段時(shí)間了,把學(xué)到的知識(shí)分享出來(lái),行文中難免有錯(cuò)誤,如果發(fā)現(xiàn)還請(qǐng)留言指正,謝謝合作
參考文章與資料:
https://time.geekbang.org/course/intro/84 作者:楊波
https://blog.csdn.net/sinat_25295611/article/details/84980987 作者:Kayfen
How OAuth 2.0 works and how to choose the right flow 作者:Lorenzo Spyna
原文出處https://www.cnblogs.com/hellxz/p/oauth3_process.html
到此這篇關(guān)于OAuth 2.0 概念及授權(quán)流程梳理的文章就介紹到這了,更多相關(guān)OAuth3.0 授權(quán)流程內(nèi)容請(qǐng)搜索億速云以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持億速云!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。