🔍
Microsoft Entra ID が発行するアクセス トークンのクレームを確認する
はじめに
Microsoft Entra ID から発行されるアクセス トークンは JWT の形式になっています。これをデコードするとさまざまな情報 (クレーム) を取得できます。ほとんどの項目については Microsoft Learn のドキュメントに記載されていますが、実際にどのような情報が取得できるかを調べました。
Microsoft Entra ID ではアクセス トークンのバージョンとして v1.0 と v2.0 があります。これは受信者 (API を公開する側アプリケーション) のアプリ マニフェストに依存します。たとえば、現時点で Microsoft Graph のアクセス トークンのバージョンは v1.0 です。v2.0 にする場合はアプリ マニフェストの accessTokenAcceptedVersion を 2 にする必要があります。
v1.0 の場合
| クレーム名 | 書式 | 例 | 説明 |
|---|---|---|---|
| aud | 文字列 | "00000003-0000-0000-c000-000000000000" |
受信者 (GUID) |
| iss | URL | "https://sts.windows.net/bf2a4ea3-..." |
発行元 |
| iat | 数値 | 1754546400 |
発行日時 (UNIX タイムスタンプ) |
| nbf | 数値 | 1754546400 |
有効期間の開始日時 (UNIX タイムスタンプ) |
| exp | 数値 | 1754546400 |
有効期間の終了日時 (UNIX タイムスタンプ) |
| acct | 数値 | 0 |
ユーザーの種類 (メンバーの場合は 0、ゲストの場合は 1) |
| acr | 文字列 | "1" |
先進認証 (ISO/IEC 29115) を満たしているかどうか |
| acrs | 配列 | ["p1"] |
認証コンテキスト ID |
| aio | 文字列 | "AZQAa/8Z..." |
トークン再利用のための内部値 |
| amr | 配列 | ["pwd"] |
ログイン方法 |
| app_displayname | 文字列 | "Microsoft Graph API Client" |
アプリケーション名 |
| appid | 文字列 | "95b74787-..." |
アプリケーション ID (GUID) |
| appidacr | 文字列 | "1" |
認証の種類 (パブリック クライアントの場合は 0、シークレットを使用する場合は 1、証明書を使用する場合は 2) |
| family_name | 文字列 | "Bowen" |
ユーザーの姓 |
| given_name | 文字列 | "Megan" |
ユーザーの名 |
| idtyp | 文字列 | "user" |
トークンの種類 |
| ipaddr | 文字列 | "192.168.0.1" |
ユーザーの IP アドレス |
| name | 文字列 | "Megan Bowen" |
ユーザーの表示名 |
| oid | 文字列 | "b93a9078-..." |
ユーザーのオブジェクト ID (GUID) |
| platf | 文字列 | "3" |
認証に使用されたプラットフォーム |
| puid | 文字列 | "1003..." |
Microsoft アカウントの一意識別子 |
| rh | 文字列 | "1.AWoAo0..." |
リフレッシュ トークンと関連するハッシュ値 |
| scp | 文字列 | "User.Read" |
スコープ |
| sid | 文字列 | "006afeb9-..." |
セッション ID |
| signin_state | 配列 | ["kmsi"] |
サインイン状態 |
| sub | 文字列 | "XTgMj5XL..." |
ユーザー ID (一意のサブジェクト識別子) |
| tenant_region_scope | 文字列 | "JPR" |
テナントの地理的リージョン |
| tid | 文字列 | "bf2a4ea3-..." |
テナント ID (GUID) |
| unique_name | 文字列 | "mebanb@contoso.onmicrosoft.com" |
ユーザー ID (人間が識別可能な形式) |
| upn | 文字列 | "mebanb@contoso.onmicrosoft.com" |
ユーザー プリンシパル名 |
| uti | 文字列 | "h24pI_af..." |
トークンの一意識別子 |
| ver | 文字列 | "1.0" |
トークンのバージョン |
| wids | 配列 | ["62e90394-..."] |
ユーザーに割り当てられたロール ID |
| xms_ftd | 文字列 | "f2IRCz9e..." |
フェデレーション トークン デバッグのための内部値 |
| xms_idrel | 文字列 | "1 4" |
ID 関係のレベルを示す内部値 |
| xms_st | JSON | {"sub":"Y-WrnZbS..."} |
セキュリティ トークンの内部構造 |
| xms_tcdt | 数値 | 1754546400 |
トークン キャッシュ データのタイムスタンプ (UNIX タイムスタンプ) |
v2.0 の場合
| クレーム名 | 書式 | 例 | 説明 |
|---|---|---|---|
| aud | 文字列 | "00000003-0000-0000-c000-000000000000" |
受信者 (GUID) |
| iss | URL | "https://sts.windows.net/bf2a4ea3-..." |
発行元 |
| iat | 数値 | 1754546400 |
発行日時 (UNIX タイムスタンプ) |
| nbf | 数値 | 1754546400 |
有効期間の開始日時 (UNIX タイムスタンプ) |
| exp | 数値 | 1754546400 |
有効期間の終了日時 (UNIX タイムスタンプ) |
| aio | 文字列 | "AZQAa/8Z..." |
トークン再利用のための内部値 |
| azp | 文字列 | "95b74787-..." |
アプリケーション ID (GUID) |
| azpacr | 文字列 | "1" |
認証の種類 (パブリック クライアントの場合は 0、シークレットを使用する場合は 1、証明書を使用する場合は 2) |
| name | 文字列 | "Megan Bowen" |
ユーザーの表示名 |
| oid | 文字列 | "b93a9078-..." |
ユーザーのオブジェクト ID (GUID) |
| preferred_username | 文字列 | "mebanb@contoso.onmicrosoft.com" |
ユーザー ID (人間が識別可能な形式) |
| rh | 文字列 | "1.AWoAo0..." |
トークン再検証のための内部値 |
| scp | 文字列 | "User.Read" |
スコープ |
| sid | 文字列 | "006afeb9-..." |
セッション ID |
| sub | 文字列 | "XTgMj5XL..." |
ユーザー ID |
| tid | 文字列 | "bf2a4ea3-..." |
テナント ID (GUID) |
| uti | 文字列 | "h24pI_af..." |
トークンの識別子 |
| ver | 文字列 | "2.0" |
トークンのバージョン |
おわりに
v1.0 と比べて v2.0 ではクレームの内容が少なくなっています。特に IP アドレスは v2.0 では取得できません。影響が大きいため、Microsoft が提供している API でバージョンが変わる可能性は低いですが、注意が必要です。
Discussion