跳至主要內容

自訂 ID 權杖 (ID token)

簡介

ID 權杖 (ID token) 是由 OpenID Connect (OIDC) 協議定義的一種特殊權杖。它作為授權伺服器(Logto)在使用者成功驗證後簽發的身分聲明,攜帶已驗證使用者身分的宣告 (Claims)。

與用於存取受保護資源的 存取權杖 (Access tokens) 不同,ID 權杖專為向用戶端應用程式傳遞已驗證使用者身分而設計。它們是 JSON Web Token (JWT),包含有關驗證事件與已驗證使用者的宣告 (Claims)。

ID 權杖宣告 (Claims) 的運作方式

在 Logto 中,ID 權杖宣告 (Claims) 分為兩類:

  1. 標準 OIDC 宣告 (Standard OIDC claims):由 OIDC 規範定義,完全由驗證時請求的權限範圍 (Scopes) 決定。
  2. 擴充宣告 (Extended claims):Logto 擴充以攜帶額外身分資訊的宣告,受 雙重條件模型(Scope + Toggle) 控制。

標準 OIDC 宣告 (Standard OIDC claims)

標準宣告完全遵循 OIDC 規範。它們是否被納入 ID 權杖,僅取決於你的應用程式在驗證時請求的權限範圍 (Scopes)。Logto 不提供停用或選擇性排除個別標準宣告的選項。

下表顯示標準權限範圍與其對應宣告的對應關係:

權限範圍 (Scope)宣告 (Claims)
openidsub
profilename, family_name, given_name, middle_name, nickname, preferred_username, profile, picture, website, gender, birthdate, zoneinfo, locale, updated_at
emailemail, email_verified
phonephone_number, phone_number_verified
addressaddress

例如,若你的應用程式請求 openid profile email 權限範圍,ID 權杖將包含來自 openidprofileemail 權限範圍的所有宣告。

擴充宣告 (Extended claims)

除了標準 OIDC 宣告外,Logto 還擴充了額外宣告,攜帶 Logto 生態系專屬的身分資訊。這些擴充宣告遵循 雙重條件模型 才會被納入 ID 權杖:

  1. 權限範圍條件 (Scope condition):應用程式必須在驗證時請求對應的權限範圍。
  2. 控制台開關 (Console toggle):管理員必須在 Logto Console 中啟用該宣告納入 ID 權杖。

兩個條件必須同時滿足。權限範圍 (Scope) 屬於協議層級的存取聲明,開關 (Toggle) 則屬於產品層級的資訊暴露控制——兩者職責明確且不可互相取代。

可用的擴充權限範圍與宣告

權限範圍 (Scope)宣告 (Claims)說明 (Description)預設納入 (Included by default)
custom_datacustom_data儲存在使用者物件上的自訂資料
identitiesidentities, sso_identities使用者綁定的社交與 SSO 身分
rolesroles使用者被指派的角色 (Roles)
urn:logto:scope:organizationsorganizations使用者的組織 (Organizations) ID
urn:logto:scope:organizationsorganization_data使用者的組織資料
urn:logto:scope:organization_rolesorganization_roles使用者的組織角色指派 (Organization roles)

在 Logto Console 中設定

若要在 ID 權杖中啟用擴充宣告:

  1. 前往 Console > 自訂 JWT
  2. 開啟你希望納入 ID 權杖的宣告開關。
  3. 確保你的應用程式在驗證時請求對應的權限範圍。
自訂存取權杖 (Custom access token)

OpenID Connect Core - ID 權杖 (ID Token)