Exchange の ID トークンの内部

重要

従来の Exchange ユーザー ID トークンとコールバック トークンは、 Microsoft の Secure Future Initiative の一環として、2024 年 10 月にすべての Exchange Online テナントでオフになります。これにより、組織は現在の脅威の状況に対応するために必要なツールが提供されます。 Exchange ユーザー ID トークンは、引き続き Exchange オンプレミスで機能します。 入れ子になったアプリ認証は、今後のトークンに推奨される方法です。 詳細については、 入れ子になったアプリ認証と従来の Exchange トークンに関するブログ記事を参照してください。

getUserIdentityTokenAsync メソッドによって返された Exchange のユーザー ID トークンは、アドイン コードがバックエンド サービスへの呼び出しでユーザー ID を含めるための方法を提供します。 この記事では、トークンの形式と内容について説明します。

Exchange ユーザー ID トークンとは、そのトークンを送信する Exchange サーバーによって自己署名された、Base 64 URL 形式でエンコードされた文字列です。 トークンは暗号化されていません。署名の検証に使用する公開キーは、トークンを発行した Exchange サーバーに保存されています。 トークンには 3 つのパーツ (ヘッダー、ペイロード、署名) があります。 トークン文字列では、トークンを容易に分割できるように、パーツがピリオド文字 (.) で区切られています。

Exchange では ID トークンに、JSON Web トークン (JWT) 形式を使用します。 JWT トークンの詳細については、「RFC 7519 JSON Web Token (JWT)」を参照してください。

ID トークンのヘッダー

ヘッダーは、トークンの形式に関する情報と、署名情報に関する情報を提供します。 次の例は、トークンのヘッダーの外観を示しています。

{
  "typ": "JWT",
  "alg": "RS256",
  "x5t": "Un6V7lYN-rMgaCoFSTO5z707X-4"
}

トークンのヘッダーのパーツについての説明を、次の表に示します。
クレーム 説明
typ JWT トークンを JSON Web トークンとして識別します。 Exchange サーバーから提供される ID トークンは、すべて JWT トークンです。
alg RS256 署名の作成に使用されるハッシュ アルゴリズム。 Exchange サーバーから提供されるトークンは、すべて SHA-256 ハッシュ アルゴリズムの RSASSA-PKCS1-v1_5 を使用します。
x5t 証明書の拇印 トークンの X.509 拇印です。

ID トークンのペイロード

ペイロードには、電子メール アカウントの識別と、トークンを送信した Exchange サーバーの識別を行う認証クレームが含まれます。 以下に、ペイロード セクションの例を示します。

{ 
  "aud": "https://mailhost.contoso.com/IdentityTest.html", 
  "iss": "00000002-0000-0ff1-ce00-000000000000@mailhost.contoso.com", 
  "nbf": "1331579055", 
  "exp": "1331607855", 
  "appctxsender": "00000002-0000-0ff1-ce00-000000000000@mailhost.context.com",
  "isbrowserhostedapp": "true",
  "appctx": { 
    "msexchuid": "53e925fa-76ba-45e1-be0f-4ef08b59d389@mailhost.contoso.com",
    "version": "ExIdTok.V1",
    "amurl": "https://mailhost.contoso.com:443/autodiscover/metadata/json/1"
  } 
}

ID トークンのペイロードのパーツを、次の表に示します。
クレーム 説明
aud トークンを要求したアドインの URL。 トークンは、クライアントの Webview コントロールで実行されているアドインから送信された場合にのみ有効です。 アドインの URL はマニフェストで指定します。 マークアップはマニフェストの種類によって異なります。

XML マニフェスト: アドインが Office アドイン マニフェスト スキーマ v1.1 を使用している場合、この URL は、最初 <の SourceLocation> 要素のフォーム型 ItemRead または ItemEditの下で指定された URL です。この URL は、アドイン マニフェストの FormSettings 要素の一部として最初に発生します。

Microsoft 365 の統合マニフェスト: URL は、"extensions.audienceClaimUrl" プロパティで指定します。
iss トークンを発行した Exchange サーバーの一意の識別子です。 この Exchange サーバーから発行されるトークンはすべて同じ識別子になります。
nbf トークンの有効期間の開始日時です。 この値は 1970 年 1 月 1 日を起点とする秒数です。
exp トークンの有効期間の終了日時です。 この値も 1970 年 1 月 1 日を起点とする秒数です。
appctxsender アプリケーション コンテキストを送信した Exchange サーバーの一意の識別子。
isbrowserhostedapp アドインがブラウザーでホストされるかどうかを指定します。
appctx トークンのアプリケーション コンテキスト。

appctx クレーム内の情報は、アカウントの一意の識別子と、トークンの署名に使用された公開キーの場所を提供します。 appctx クレームのパーツを、次の表に示します。

アプリケーション コンテキスト プロパティ 説明
msexchuid 電子メール アカウントと Exchange サーバーに割り当てられた一意の識別子。
version トークンのバージョン番号。 Exchange によって提供されるトークンの値は、すべて ExIdTok.V1 になります。
amurl トークンに署名するために使用された X.509 証明書の公開キーが含まれる認証メタデータ ドキュメントの URL。

認証メタデータ ドキュメントの使用方法については、「Exchange の ID トークンを検証する」を参照してください。

ID トークンの署名

この署名は、ヘッダーおよびペイロード セクションに対して、ヘッダーで指定されたアルゴリズムを使用したハッシュ処理を行うと共に、ペイロード内で指定された場所にあるサーバー上の自己署名された X509 証明書を使用することで作成されます。 Web サービスは、この署名を検証して、ID トークンがその送信元として想定されるサーバーから発行されたものであることを確認できます。

関連項目

Exchange のユーザー ID トークンの解析例については、「Outlook アドイン トークン ビューアー」を参照してください。