Miles' Blog

天涯何處無幹話,何必要講實務話

OpenID Connect

OpenID Connect 通常簡稱 OIDC。它有幾份規格(specifications)需要先讀如下:

全名 用途
OpenID Connect Core 定義 OIDC 的核心功能
OpenID Connect Discovery 定義 Client 如何動態的發現 OP 的資訊
OpenID Connect Dynamic Registration 定義 Client 如何動態跟 OP 註冊
OAuth 2.0 Multiple Response Types 為 OAuth2 定義幾個新的 response types
OAuth 2.0 Form Post Response Mode 定義如何使用 HTTP Post 自動提交 HTML Form,並拿到 OAuth2 授權的 response parameters
OpenID 2.0 to OpenID Connect Migration 1.0 如何從 OpenID 2.0 遷移成 OpenID Connect

身分驗證

OpenID Connect 會執行身分驗證以讓使用者登入,或是確認使用者是否已登入。它會以安全的方法把身分驗證的結果傳給 Client,而 Client 因為會依賴 OpenID Connect 的驗證結果,所以稱之為 Relying Party(RP)。

驗證結果會以 ID Token 的形式傳給 Client,裡面的內容可以參考定義。

而身分驗證有三種流程可以選擇:

不同的流程會使用不同的方法把 ID Token 與 Token 傳給 Client。

三個流程的特徵如下表:

Property Authorization Code Flow Implicit Flow Hybrid Flow
Authorization Endpoint 可以回傳所有 Token? no yes no
Token Endpoint 可以回傳所有 Token? yes no no
Tokens not revealed to User Agent yes no no
Client can be authenticated yes no yes
Refresh Token possible yes no yes
Communication in one round trip no yes no
Most communication server-to-server yes no varies

不同的流程,Authorization Request 的 response_type 就會有所不同。response_type 與流程的對應如下表:

“response_type” Flow
code Authorization Code Flow
id_token Implicit Flow
id_token token Implicit Flow
code id_token Hybrid Flow
code token Hybrid Flow
code id_token token Hybrid Flow

參數序列化(Serializations)

References

0%