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

       在學習其餘應用場景前,須要瞭解幾個客戶端的受權模式。首先了解下本節使用的幾個名詞html

       Resource Owner:資源擁有者,文中稱「user」;瀏覽器

       Client爲第三方客戶端;服務器

       Authorization server爲受權服務器;網絡

       redirection URI:簡單理解爲取數據的地址;學習

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

       這裏把訪問資源服務器簡單理解成取數據。代理


 

Resource Owner Password Credentials模式

 

下面以我本身的理解加上對話的形式來簡要說明。日誌

User:Client,這是個人redirection URI,user ID和Password,你去幫我拿些數據吧。code

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

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

以上是我的對客戶端的受權模式的理解,若有不對的地方,歡迎指正

相關文章
相關標籤/搜索