🔍

Microsoft Entra ID が発行するアクセス トークンのクレームを確認する

に公開

はじめに

Microsoft Entra ID から発行されるアクセス トークンは JWT の形式になっています。これをデコードするとさまざまな情報 (クレーム) を取得できます。ほとんどの項目については Microsoft Learn のドキュメントに記載されていますが、実際にどのような情報が取得できるかを調べました。

https://learn.microsoft.com/ja-jp/entra/identity-platform/access-token-claims-reference?WT.mc_id=M365-MVP-5002941

https://learn.microsoft.com/ja-jp/entra/identity-platform/optional-claims-reference?WT.mc_id=M365-MVP-5002941

Microsoft Entra ID ではアクセス トークンのバージョンとして v1.0 と v2.0 があります。これは受信者 (API を公開する側アプリケーション) のアプリ マニフェストに依存します。たとえば、現時点で Microsoft Graph のアクセス トークンのバージョンは v1.0 です。v2.0 にする場合はアプリ マニフェストの accessTokenAcceptedVersion を 2 にする必要があります。

https://learn.microsoft.com/ja-jp/entra/identity-platform/access-tokens?WT.mc_id=M365-MVP-5002941

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