メインコンテンツまでスキップ

カスタム ID トークン

はじめに

ID トークン (ID token) は、OpenID Connect (OIDC) プロトコルによって定義された特別な種類のトークンです。これは、ユーザーが正常に認証 (Authentication) された後、認可 (Authorization) サーバー(Logto)によって発行されるアイデンティティの証明であり、認証 (Authentication) されたユーザーのアイデンティティに関するクレーム (Claims) を含みます。

アクセス トークン (Access token) が保護されたリソースへのアクセスに使用されるのとは異なり、ID トークンは認証 (Authentication) されたユーザーのアイデンティティをクライアントアプリケーションに伝えるために特化して設計されています。これらは JSON Web Token (JWT) であり、認証 (Authentication) イベントおよび認証 (Authentication) されたユーザーに関するクレーム (Claims) を含みます。

ID トークンのクレーム (Claims) の仕組み

Logto では、ID トークンのクレーム (Claims) は 2 つのカテゴリに分かれています:

  1. 標準 OIDC クレーム (Claims):OIDC 仕様で定義されており、これらのクレーム (Claims) は認証 (Authentication) 時にリクエストされたスコープ (Scope) によって完全に決定されます。
  2. 拡張クレーム (Claims):Logto によって拡張され、追加のアイデンティティ情報を運ぶクレーム (Claims) であり、二重条件モデル(スコープ (Scope) + トグル)によって制御されます。

標準 OIDC クレーム (Claims)

標準クレーム (Claims) は OIDC 仕様によって完全に管理されています。ID トークンに含まれるかどうかは、認証 (Authentication) 時にアプリケーションがリクエストするスコープ (Scope) のみに依存します。Logto では、個々の標準クレーム (Claims) を無効化したり選択的に除外したりするオプションは提供していません。

以下の表は、標準スコープ (Scope) とそれに対応するクレーム (Claims) のマッピングを示しています:

ScopeClaims
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 スコープ (Scope) をリクエストした場合、ID トークンには openidprofileemail スコープ (Scope) のすべてのクレーム (Claims) が含まれます。

拡張クレーム (Claims)

標準 OIDC クレーム (Claims) に加えて、Logto は Logto エコシステム固有のアイデンティティ情報を運ぶ追加のクレーム (Claims) を拡張しています。これらの拡張クレーム (Claims) は、ID トークンに含めるために 二重条件モデル に従います:

  1. スコープ (Scope) 条件:アプリケーションが認証 (Authentication) 時に対応するスコープ (Scope) をリクエストする必要があります。
  2. コンソールのトグル:管理者が Logto コンソールでそのクレーム (Claims) を ID トークンに含める設定を有効にする必要があります。

両方の条件が同時に満たされる必要があります。スコープ (Scope) はプロトコル層でのアクセス宣言、トグルはプロダクト層での公開制御として機能し、それぞれの役割は明確で代替できません。

利用可能な拡張スコープ (Scope) とクレーム (Claims)

ScopeClaims説明デフォルトで含まれる
custom_datacustom_dataユーザーオブジェクトに保存されたカスタムデータ
identitiesidentities, sso_identitiesユーザーの連携済みソーシャルおよび SSO アイデンティティ
rolesrolesユーザーに割り当てられたロール (Role)
urn:logto:scope:organizationsorganizationsユーザーの組織 (Organization) ID
urn:logto:scope:organizationsorganization_dataユーザーの組織 (Organization) データ
urn:logto:scope:organization_rolesorganization_rolesユーザーの組織 (Organization) ロール (Role) 割り当て

Logto コンソールでの設定方法

ID トークンに拡張クレーム (Claims) を有効にするには:

  1. コンソール > カスタム JWT に移動します。
  2. ID トークンに含めたいクレーム (Claims) のトグルをオンにします。
  3. アプリケーションが認証 (Authentication) 時に対応するスコープ (Scope) をリクエストしていることを確認します。
カスタム アクセス トークン

OpenID Connect Core - ID トークン