OAUTH2.0理解

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)

受權流程微信

  1. 客戶端應用引導用戶到受權服務頁面
  2. 用戶登陸並受權客戶端應用獲取某個Scope域中的用戶資源信息
  3. 客戶端應用得到一個受權碼
  4. 客戶端應用經過受權碼向受權服務器請求access token
  5. 客戶端應用經過access token向資源服務器請求Scope域中的資源信息
相關文章
相關標籤/搜索