OAuth2.0的四種授權(quán)模式,你會了嗎?

1.什么是OAuth2

OAuth(開放授權(quán))是一個開放標(biāo)準(zhǔn),允許用戶授權(quán)第三方移動應(yīng)用訪問他們存儲在另外的服務(wù)提供者上的信息,而不需要將用戶名和密碼提供給第三方移動應(yīng)用或分享他們數(shù)據(jù)的所有內(nèi)容,OAuth2.0是OAuth協(xié)議的延續(xù)版本,但不向后兼容OAuth

1.0即完全廢止了OAuth1.0。

2.應(yīng)用場景

第三方應(yīng)用授權(quán)登錄:在APP或者網(wǎng)頁接入一些第三方應(yīng)用時,時長會需要用戶登錄另一個合作平臺,比如QQ,微博,微信的授權(quán)登錄。


原生app授權(quán):app登錄請求后臺接口,為了安全認證,所有請求都帶token信息,如果登錄驗證、請求后臺數(shù)據(jù)。

前后端分離單頁面應(yīng)用(spa):前后端分離框架,前端請求后臺數(shù)據(jù),需要進行oauth2安全認證,比如使用vue、react后者h5開發(fā)的app。

3.名詞定義

(1) Third-party application:第三方應(yīng)用程序,本文中又稱"客戶端"(client),比如打開知乎,使用第三方登錄,選擇qq登錄,這時候知乎就是客戶端。

(2)HTTP service:HTTP服務(wù)提供商,本文中簡稱"服務(wù)提供商",即上例的qq。

(3)Resource Owner:資源所有者,本文中又稱"用戶"(user),即登錄用戶。

(4)User Agent:用戶代理,本文中就是指瀏覽器。

(5)Authorization server:認證服務(wù)器,即服務(wù)提供商專門用來處理認證的服務(wù)器。

(6)Resource server:資源服務(wù)器,即服務(wù)提供商存放用戶生成的資源的服務(wù)器。它與認證服務(wù)器,可以是同一臺服務(wù)器,也可以是不同的服務(wù)器。

1. OAuth2簡易實戰(zhàn)(一)-四種模式


1.1. 隱式授權(quán)模式(Implicit Grant)


?第一步:用戶訪問頁面時,重定向到認證服務(wù)器。

?第二步:認證服務(wù)器給用戶一個認證頁面,等待用戶授權(quán)。

?第三步:用戶授權(quán),認證服務(wù)器想應(yīng)用頁面返回Token

?第四步:驗證Token,訪問真正的資源頁面




1.2. 授權(quán)碼授權(quán)模式(Authorization code Grant)


第一步:用戶訪問頁面

?第二步:訪問的頁面將請求重定向到認證服務(wù)器

?第三步:認證服務(wù)器向用戶展示授權(quán)頁面,等待用戶授權(quán)

?第四步:用戶授權(quán),認證服務(wù)器生成一個code和帶上client_id發(fā)送給應(yīng)用服務(wù)器 然后,應(yīng)用服務(wù)器拿到code,并用client_id去后臺查詢對應(yīng)的client_secret

?第五步:將code、client_id、client_secret傳給認證服務(wù)器換取access_token和? refresh_token

?第六步:將access_token和refresh_token傳給應(yīng)用服務(wù)器

?第七步:驗證token,訪問真正的資源頁面



1.3. 密碼模式(Resource Owner Password Credentials Grant)



?第一步:用戶訪問用頁面時,輸入第三方認證所需要的信息(QQ/微信賬號密碼)

?第二步:應(yīng)用頁面那種這個信息去認證服務(wù)器授權(quán)

?第三步:認證服務(wù)器授權(quán)通過,拿到token,訪問真正的資源頁面

優(yōu)點:不需要多次請求轉(zhuǎn)發(fā),額外開銷,同時可以獲取更多的用戶信息。(都拿到賬號密碼了)

缺點:局限性,認證服務(wù)器和應(yīng)用方必須有超高的信賴。(比如親兄弟?)

應(yīng)用場景:自家公司搭建的認證服務(wù)器

1.4. 客戶端憑證模式(Client Credentials Grant)


?第一步:用戶訪問應(yīng)用客戶端

?第二步:通過客戶端定義的驗證方法,拿到token,無需授權(quán)

?第三步:訪問資源服務(wù)器A

?第四步:拿到一次token就可以暢通無阻的訪問其他的資源頁面。

這是一種最簡單的模式,只要client請求,我們就將AccessToken發(fā)送給它。這種模式是最方便但最不安全的模式。因此這就要求我們對client完全的信任,而client本身也是安全的。

因此這種模式一般用來提供給我們完全信任的服務(wù)器端服務(wù)。在這個過程中不需要用戶的參與。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容