OAuth 2 0實戰課 09 筆記

2021-10-23 23:23:14 字數 1672 閱讀 7460

學習極客時間王新棟的《oauth 2.0實戰課》筆記:實戰:利用oauth 2.0實現乙個openid connect使用者身份認證協議。

oidc 是什麼?

oidc= 授權協議 + 身份認證

oauth 2.0 的授權碼許可流程的運轉,需要資源擁有者、第三方軟體、授權服務、受保護資源這 4 個角色間的順暢通訊、配合才能夠完成,

在 oidc 的官方標準框架中,eu、rp 和 op 這三個角色對於 oidc 非常重要:

借助極客時間的例子,來看一下 oauth 2.0 的 4 個角色和 oidc 的 3 個角色之間的對應關係:

oidc 和 oauth 2.0 的關鍵區別

oidc 就是基於 oauth 2.0 來實現的乙個身份認證協議框架,oidc 的通訊流程圖幫助理解oidc 和 oauth 2.0 的關係:

乙個基於授權碼流程的 oidc 協議流程,跟 oauth 2.0 中的授權碼許可的流程幾乎完全一致,唯一的區別就是多返回了乙個 id_token,我們稱之為 id 令牌。這個令牌是身份認證的關鍵。

oidc 中的 id 令牌生成和解析方法

在上面圖 2 的 oidc 通訊流程的第 6 步,我們可以看到 id 令牌(id_token)和訪問令牌(access_token)是一起返回的。,令牌不需要被第三方軟體解析,因為它對第三方軟體來說是不透明的。但 id 令牌需要能夠被第三方軟體解析出來,因為第三方軟體需要獲取 id 令牌裡面的內容,來處理使用者的登入態邏輯。

id 令牌的內容是什麼呢?

5 個 jwt 宣告引數也是必須要有的。

//genate id token

string id_token=

genrateidtoken

;private string genrateidtoken

id 令牌才是 oidc 作為身份認證協議的關鍵所在。那麼有了 id 令牌後,第三方軟體應該如何解析它呢?

private map

parsejwt

(string jwt)

oidc 的流程

細粒度地去看 oidc 的流程就是:生成 id 令牌 -> 建立 userinfo 端點 -> 解析 id 令牌 -> 記錄登入狀態 -> 獲取 userinfo。

單點登入

記錄一下常用的單點登入的交易流程

乙個使用者 g 要登入第三方軟體 a,a 有三個子應用,網域名稱分別是 a1.com、a2.com、a3.com。如果 a 想要為使用者提供更流暢的登入體驗,讓使用者 g 登入了 a1.com 之後也能順利登入其他兩個網域名稱,就可以建立乙個身份認證服務,來支援 a1.com、a2.com 和 a3.com 的登入。:

OAuth 2 0實戰課 07 08 筆記

極客時間 oauth 2.0實戰課 07 08 筆記 移動端使用oauth2.0 code challenge method s256即code verifier code challenge base64url encode sha256 ascii code verifier 按照上圖訪問步驟 ...

實戰OAUTH 2 0授權機制

oauth 2.0是現在業界流行的認證授權方式,使用者可以授權應用程式在不提供使用者的密碼的場景下,可以遵循oauth的規範來申請獲取訪問伺服器的使用者相關資源的許可權。oauth 2.0的規範和流程還是比較難理解的,因此我用keycloak來實際演示一下如何按照oauth 2.0的協議來進行授權。...

學習OAuth 2 0課程簡記 1

角色 授權碼許可型別 客戶需要授權客戶端訪問資源持有者的部分資源,這裡如果直接將使用者名稱密碼給客戶端則會產生賬號洩露風險,並且無法對資源範圍管控,沒有到期時間除非修改密碼等問題 所以需要授權碼,通過授權碼,客戶端找授權服務換取訪問令牌!授權客戶端用令牌取訪問有限資源 oauth 2.0 授權的核心...