IDトークン(ID Token)
IDトークンとは
IDトークン(ID Token) は、OpenID Connect認証において、認証結果とユーザー情報を証明するJWTです。
役割
- ✅ 認証が成功したことの証明
- ✅ 認証されたユーザーの識別子(
sub)の提供 - ✅ 認証時刻・認証方法などのメタ情報の伝達
発行フロー
- Authorization Code Flow: トークンエンドポイントで発行
- CIBA: トークンエンドポイントで発行
- Hybrid Flow: 認可エンドポイ ントとトークンエンドポイントで発行
RFC準拠: OpenID Connect Core 1.0 Section 2
標準クレーム(Standard Claims)
以下は OpenID Connect 仕様で定義された標準クレームの一覧です:
| Claim | 型 | 説明 |
|---|---|---|
sub | string | Subject - Issuer における End-User の識別子 |
name | string | End-User の表示用フルネーム。肩書きや称号 (suffix) を含むこともある |
given_name | string | 名(Given Name) |
family_name | string | 姓(Family Name) |
middle_name | string | ミドルネーム |
nickname | string | ニックネーム |
preferred_username | string | End-User の選好するユーザー名(例:janedoe) |
profile | string | プロフィールページのURL |
picture | string | プロフィール画像のURL |
website | string | End-User のWebサイトURL |
email | string | End-User の選好するEmailアドレス |
email_verified | boolean | Emailアドレスが検証済みかどうか |
gender | string | 性別 (例:male, female) |
birthdate | string | 生年月日(例:1990-01-01) |
zoneinfo | string | タイムゾーン情報 |
locale | string | ロケール(例:ja-JP) |
phone_number | string | 電話番号(E.164形式が推奨) |
phone_number_verified | boolean | 電話番号が検証済みかどうか |
address | object | 郵送先住所(JSONオブジェクト) |
updated_at | number | 最終更新日時(UNIXタイムスタンプ) |
iss | string | 発行者識別子(例:https://idp.example.com) |
aud | string | 対象クライアントID |
exp | number | 有効期限(UNIXタイムスタンプ) |
iat | number | 発行時刻(UNIXタイムスタンプ) |
auth_time | number | 最終認証時刻 |
acr | string | 認証コンテキストクラス参照(例:urn:acr:1) |
amr | array | 認証方法参照(例:password, mfa, webauthn) |
nonce | string | リプレイ攻撃防止のための一意なトークン |
azp | string | 承認されたパーティー(aud に複数値がある場合に使用) |