1. 程式人生 > >IdentityServer4-客戶端的授權模式原理分析(三)

IdentityServer4-客戶端的授權模式原理分析(三)

原文: IdentityServer4-客戶端的授權模式原理分析(三)

在學習其他應用場景前,需要了解幾個客戶端的授權模式。首先了解下本節使用的幾個名詞

Resource Owner:資源擁有者,文中稱“user”;

Client為第三方客戶端;

Authorization server為授權伺服器;

redirection URI:簡單理解為取資料的地址;

User Agent:使用者代理,本文中就是指瀏覽器;

這裡把訪問資源伺服器簡單理解成取資料。


 

Resource Owner Password Credentials模式

 

下面以我自己的理解加上對話的形式來簡要說明。

User:Client,這是我的redirection URI,user ID和Password,你去幫我拿些資料吧。

Client:好的,沒問題!(轉向Authorization server)Authorization server,這是user的user ID和Password,我要去拿user需要的資料。

Authorization server:給的user ID和Password正確,給你access token和refresh token,去拿資料吧。


authorization code模式

 

User:Client,這是我的redirection URI,你去幫我拿些資料吧,但是我不會提供賬號密碼。

Client:這樣啊,那我們找Authorization server吧,讓它來當中間人。

Authorization server(很負責任):User,你是要讓Client幫你拿資料嗎。

User:是啊,這是我的redirection URI。

Authorization server:Client,給你個授權碼authorization code,你拿著authorization code和user給你redirection URI給我驗證吧。

Client:好,這是authorization code和user給我redirection URI,我要去拿資料了。

Authorization server

:可以,驗證沒問題了,給你個access token和refresh token,你去拿資料吧。


Implicit模式

 

User:Client,這是我的redirection URI,你去幫我拿些資料吧,但是我不會提供賬號密碼。

Client:這樣啊,那我們還是找Authorization server吧,讓它來當中間人。

Authorization server:User,你是要讓Client幫你拿資料嗎。

User:是啊,這是我的redirection URI。

Authorization server:(瀏覽器登場)瀏覽器,這是user的redirection URI和access token的碎片,你來幫他搞吧。

瀏覽器(很委屈):只給access token的碎片弄不了啊,我還是問redirection URI怎樣才能把這些碎片拼完整吧。

redirection URI的老大(資源伺服器):給你個網頁,裡面有方法把access token的碎片拼起來。

瀏覽器:Client,access token拼好了,你用access token去拿資料吧。

 

Implicit模式通過user的瀏覽器成功拿到了access token,相對於authorization code模式,省去了授權碼部分。

而密碼模式,需要user提供賬號和密碼進行驗證。倘若user的賬號密碼可以讓Client獲取到,可以使用密碼模式,但要確保Client不被黑了。


 

Hybrid模式:

Hybrid模式是結合了Implicit模式和authorization code模式。以下是我對Hybrid模式的理解,如有不對的地方,歡迎指正!

User通過身份認證後,ID token和類似授權碼authorization code等資訊被傳輸到瀏覽器,Client通過瀏覽器獲取到authorization code,然後從Authorization server獲取到access token和refresh token。

 


 

最後說下refresh token

獲取到access token後,它是預設有效時間為3600秒/1小時,可以在new Client的AccessTokenLifetime進行設定。一般情況下,access token失效後,使用者需要重新授權,Client才能拿到新的access token。但有了refresh token後,Client檢測到access token失效後,可直接向Authorization server申請新的access token。當然,refresh token也是有有效期的。

AbsoluteRefreshTokenLifetime的預設有效期為2592000秒/30天SlidingRefreshTokenLifetime的預設有效期為1296000秒/15天。

refresh token支援hybridauthorization codedevice flow 和 resource owner password flows等模式 。


 

本節圖片轉自阮一峰的網路日誌:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

以上是個人對客戶端的授權模式的理解,如有不對的地方,歡迎指正