基於oAuth2的OIDC原理 學習筆記

OAuth2

概念

OAuth 2.0 規範定義了一個受權(delegation)協議,OAuth2.0 不是認證協議。瀏覽器

OAuth解決的大部分問題在於Client和被訪問的資源之間的鏈接上,在用戶不存在的狀況下,使用這種委託訪問。安全

流程

clipboard.png

上圖ABCDE這5個步驟,既是完整的獲取訪問令牌的一個過程,其中:服務器

  • Client 爲第三方應用程序,
  • resource owner 爲資源全部者
  • user-agent 爲相似瀏覽器的代理
  • authorization server 受權服務器
  • resource server 資源服務器

流程以下:ide

  • A) Client使用瀏覽器(User-Agent)訪問Authorization server。也就是用瀏覽器訪問一個URL,這個URL是Authorization server提供的,訪問的Client須要提供(客戶端標識client_id,受權範圍scope,本地狀態state和redirect_uri)這些參數。
  • B) Authorization server驗證Client在(A)中傳遞的參數信息,若是無誤則提供一個頁面供Resource owner登錄,登錄成功後選擇Client能夠訪問Resource server的哪些資源以及讀寫權限。
  • C) 在(B)無誤後返回一個受權碼(Authorization Code)給Client。
  • D) Client拿着(C)中得到的受權碼(Authorization Code)和(客戶端標識、redirect_uri等信息)做爲參數,請求Authorization server提供的獲取access token。
  • E) Authorization server返回access token和可選的refresh token 以及令牌有效時間等信息給Client。
  • F) client拿到access token後就能夠去resources server訪問resource owner的資源

OIDC

定義了一種基於OAuth2的用戶身份認證spa

OIDC的核心在於在OAuth2的受權流程中,一併提供用戶的身份認證信息(ID Token)給到第三方客戶端,ID Token使用JWT格式來包裝,得益於JWT(JSON Web Token)的自包含性,緊湊性以及防篡改機制,使得ID Token能夠安全的傳遞給第三方客戶端程序而且容易被驗證。此外還提供了UserInfo的接口,用於獲取用戶的更完整的信息代理

流程

  1. RP發送一個認證請求給OP;
  2. OP對EU進行身份認證,而後提供受權;
  3. OP把ID Token和Access Token(須要的話)返回給RP;
  4. RP使用Access Token發送一個請求UserInfo EndPoint;
  5. UserInfo EndPoint返回EU的Claims。

術語:server

  • EU:End User:一我的類用戶。
  • RP:Relying Party ,用來代指OAuth2中的受信任的客戶端,身份認證和受權信息的消費方;
  • OP:OpenID Provider,有能力提供EU認證的服務(好比OAuth2中的受權服務),用來爲RP提供EU的身份認證信息;
  • ID Token:JWT格式的數據,包含EU身份認證的信息。
  • UserInfo Endpoint:用戶信息接口(受OAuth2保護),當RP使用Access Token訪問時,返回受權用戶的信息,此接口必須使用HTTPS
  • AuthN & AuthZ: AuthN表明authentication AuthZ 表明authrization

clipboard.png

相關文章
相關標籤/搜索