學習極客時間王新棟的《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 授權的核心...