身份認證系統 OAuth2的四種模式


OAuth2標准為了應對不同的場景,設計了四種不同的標准模式。

1、授權碼模式

 

授權碼模式是四種模式中最繁瑣也是最安全的一種模式。

client向資源服務器請求資源,被重定向到授權服務器(AuthorizationServer)

瀏覽器向資源擁有者索要授權,之后將用戶授權發送給授權服務器

授權服務器將授權碼(AuthorizationCode)轉經瀏覽器發送給client

client拿着授權碼向授權服務器索要訪問令牌

授權服務器返回Access     Token和Refresh Token給cilent

這種模式是四種模式中最安全的一種模式。一般用於client是Web服務器端應用或第三方的原生App調用資源服務的時候。因為在這種模式中AccessToken不會經過瀏覽器或移動端的App,而是直接從服務端去交換,這樣就最大限度的減小了AccessToken泄漏的風險。

2、簡化模式

 

簡化模式相對於授權碼模式省略了,提供授權碼,然后通過服務端發送授權碼換取AccessToken的過程。

client請求資源被瀏覽器轉發至授權服務器

瀏覽器向資源擁有者索要授權,之后將用戶授權發送給授權服務器

授權服務器將AccessToken以Hash的形式存放在重定向uri的fargment中發送給瀏覽器

瀏覽器訪問重定向URI

資源服務器返回一個腳本,用以解析Hash中的AccessToken

瀏覽器將Access Token解析出來

將解析出的Access Token發送給client

一般簡化模式用於沒有服務器端的第三方單頁面應用,因為沒有服務器端就無法使用授權碼模式。

3、密碼模式

密碼模式是用戶直接將自己的用戶名密碼交給client,client用用戶的用戶名密碼直接換取AccessToken。

 

用戶將認證密碼發送給client

client拿着用戶的密碼向授權服務器請求Access Token

授權服務器將Access Token和Refresh Token發送給client

這種模式十分簡單,但是卻意味着直接將用戶敏感信息泄漏給了client,因此這就說明這種模式只能用於client是我們自己開發的情況下。因此密碼模式一般用於我們自己開發的,第一方原生App或第一方單頁面應用。

4、客戶端模式

這是一種最簡單的模式,只要client請求,我們就將AccessToken發送給它。

client向授權服務器發送自己的身份信息,並請求AccessToken

確認client信息無誤后,將AccessToken發送給client

這種模式是最方便但最不安全的模式。因此這就要求我們對client完全的信任,而client本身也是安全的。因此這種模式一般用來提供給我們完全信任的服務器端服務。在這個過程中不需要用戶的參與。

我們來總結一下四種模式的應用場景:

1、授權碼模式:第三方Web服務器端應用與第三方原生App

2、簡化模式:第三方單頁面應用

3、密碼模式:第一方單頁應用與第一方原生App

4、客戶端模式:沒有用戶參與的,完全信任的服務器端服務


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM