跳到主要內容

OIDC 深入解析:基於 OAuth 2.0 的身分驗證層如何透過 JWT 實現現代 SSO

OAuth 2.0 解決了授權問題,卻無法回答「你是誰」。OIDC(OpenID Connect) 在其上新增身分驗證層,透過 JWT 格式的 ID Token 傳遞使用者身分,成為現代 SSO 的核心標準。

OIDC 如何補足 OAuth 2.0 的缺口

OAuth 2.0 的 Access Token 僅代表「被授權存取某資源」,格式與內容未經規範,應用程式無法從中得知使用者身分。OIDC 在 Authorization Code Flow 中新增 ID Token,以標準 JWT 格式夾帶使用者資訊(如 subemailname),並由 Identity Provider(IdP)以私鑰簽章,確保不可竄改。應用程式驗證簽章後即可安全識別使用者,不需額外呼叫資料庫,大幅降低身分驗證的複雜度。

ID Token 結構與 SSO 實現原理

ID Token 是標準 JWT,由 Header、Payload、Signature 三段組成。Payload 中的關鍵欄位包含 iss(發行者)aud(目標應用)exp(過期時間),確保 Token 的安全邊界。SSO 場景中,使用者僅需向 IdP 登入一次,各子系統透過同一組 ID Token 驗證身分,無需重複登入。OIDC 同時定義 UserInfo Endpoint,可用 Access Token 取得更完整的使用者資料,兩者搭配覆蓋絕大多數身分驗證需求。

{
  "iss": "https://accounts.google.com",
  "sub": "1234567890",
  "aud": "my-client-id",
  "email": "user@example.com",
  "exp": 1716239022
}

💡 重點整理

  • OIDC 是 OAuth 2.0 的超集,新增身分驗證層,並未取代授權機制。
  • ID Token 以 JWT 格式由 IdP 簽章,應用程式可在本地驗證,無需遠端查詢。
  • SSO 透過集中式 IdP 發行 ID Token,多系統共享同一身分認證狀態。
  • UserInfo Endpoint 提供補充的使用者資料,與 ID Token 搭配使用。

OIDC 以最小幅度擴充 OAuth 2.0,便解決了身分驗證的核心痛點。無論是企業內網 SSO,還是雲端 SaaS 整合,OIDC 搭配 JWT 已是業界首選的標準解法。

📚 參考文獻

  1. OpenID Connect Core 1.0 — OpenID Foundation 官方規格文件
  2. RFC 6749: The OAuth 2.0 Authorization Framework — IETF
  3. Introduction to JSON Web Tokens — jwt.io