OAUTH2
OAuth2.0 是一個開放受權協議,經常使用於第三方服務的認證,其之於1.0更爲簡單,且更安全。api
基礎概念
將服務上的用戶數據安全的開放給第三方應用,其有兩部分組成:安全
- 受權服務:用戶對應用的受權及Token發放
- 資源服務:應用鑑權後的服務資源Api響應
受權模式
- 受權碼受權模式(authorization code grant)
經過受權碼的跳轉工做流來簽發Token
,這是目前微信公衆號等各大開放平臺服務中經常使用的方案
- 簡化受權模式(implicit grant)
相似於受權碼受權模式,可是簡化掉了受權碼交換的操做
- 密碼受權模式(password grant)
密碼受權模式方便於第一方客戶端(手機應用等)直接經過帳號密碼來交換Token
,不用像第三方客戶端那樣經過受權碼跳轉
- 客戶端憑據受權模式(client credentials grant)
該模式並不是Auth的第三方受權解決方案
這裏不存在用戶角色,而是應用服務利用本身的客戶端身份直接向認證服務器提請受權
認證服務器須要保存應用的Client ID、Client Secret等身份信息
經常使用於服務化架構系統中微服務間的api通訊
受權碼受權模式
角色
整個流程中有四種角色:服務器
- 資源擁有者(Resource Owner)
- 資源服務器(Resource Server)
- 受權服務器(Authorization Server)
- 客戶端(Client)
受權流程微信
- 客戶端應用引導用戶到受權服務頁面
- 用戶登陸並受權客戶端應用獲取某個
Scope
域中的用戶資源信息
- 客戶端應用得到一個受權碼
- 客戶端應用經過受權碼向受權服務器請求access token
- 客戶端應用經過access token向資源服務器請求
Scope
域中的資源信息