OAuth2.0

OAuth2.0  開發受權協議安全

四種角色:服務器

Resource Owner 用戶: 資源擁有者資源

Resource  Server 資源服務器: 資源託管服務器開發

Auth Server 受權服務器: 認證受權服務器認證授權

Client 客戶端: 須要訪問用戶資源的第三方應用程序程序

 

典型應用情景: 密碼

Client 須要訪問用戶在資源服務器中的私有資源。客戶端

最直接粗暴的方式: Client 中經過用戶名、密碼來訪問資源服務器私有資源。 協議

此方式的弱點是:  用戶名、密碼暴露給Client了, 致使資源服務器不安全。word

因此按照抽象理論則應該抽象出一個抽象層出來,不是直接經過UserName/Password來訪問資源服務器, 這個抽象層就是Token, 此Token具備過時時間等設定從而經過這個抽象層來保證資源服務器的安全。 

故如今的問題是怎麼獲取到Token。

在OAuth2.0 中提供了四種方式來獲取Token:

受權碼

簡單模式

用戶名、密碼方式

客戶端模式

 

在OAuth2.0 的體系下首先有個前提條件是:

全部Client 都須要在認證服務器中進行註冊來代表Client能夠從認證服務器中獲取Token,其中註冊的消息: ClientId 、 ClientSecret、RedirectUri。

受權碼模式:

一、Client 訪問 Auth Server (stirng GetCode(ClientId,ClientSecret)) 經過ClientId,ClientSecret換取受權Code

二、Client 訪問 Auth Server (Json GetToken(ClientId,ClientSecret,Code)) 經過Code換取Token

三、Client 利用Token來訪問資源服務器

 

簡單模式:

一、Client 訪問 Auth Server (Json GetToken(ClientId,ClientSecret))  經過ClientId,ClientSecret換取Token

二、Client 利用Token來訪問資源服務器

 

用戶名、密碼模式:

一、Client 訪問 Auth Server (Json GetToken(ClientId,ClientSecret,UserName,Password))  經過ClientId,ClientSecret,UserName,Password換取Token,注意Client不能保存UserName和Password

二、Client 利用Token來訪問資源服務器

 

客戶端模式:

一、Client 訪問 Auth Server (Json GetToken(ClientId,ClientSecret))  經過ClientId,ClientSecret換取Token

二、Client 利用Token來訪問資源服務器

 

從上面的整個流程來看就是利用ClientId,ClientSecret/UserName,Password/Code 來換取Token,最後利用Token來訪問資源。

因此關鍵點就是抽象出了Token這個中間層來達到隔離、安全的效果。

相關文章
相關標籤/搜索