AD FS によって発行された SAML トークンを Microsoft Graph アクセス トークンに交換する

Active Directory フェデレーション サービス (AD FS) によって発行された SAML トークンを使用するシングル サインオン (SSO) をアプリケーションで有効にして、Microsoft Graph へのアクセスも要求する場合は、この記事の手順に従ってください。

SAML ベアラー アサーション フローを有効にして、フェデレーション AD FS インスタンスによって発行された SAMLv1 トークンを、Microsoft Graph 用の OAuth 2.0 アクセス トークンに交換します。 ユーザーの認証のためにユーザーのブラウザーが Microsoft Entra ID にリダイレクトされると、ユーザーに自分の資格情報を入力するよう求めるのではなく、ブラウザーによって SAML サインインからセッションが取得されます。

重要

このシナリオは、AD FS が、元の SAMLv1 トークンを発行したフェデレーション ID プロバイダーである場合にのみ機能します。 Microsoft Entra ID によって発行された SAMLv2 トークンを Microsoft Graph アクセス トークンに交換することはできません

前提条件

シナリオの概要

OAuth 2.0 SAML ベアラー アサーション フローでは、クライアントが既存の信頼関係を使用する必要があるときに、SAML アサーションを使用して OAuth アクセス トークンを要求することができます。 SAML アサーションに適用される署名は、承認されたアプリの認証を提供します。 SAML アサーションは、ID プロバイダーによって発行され、サービス プロバイダーによって使用される XML セキュリティ トークンです。 サービス プロバイダーはその内容に依存して、セキュリティ関連の目的でアサーションの対象を識別します。

SAML アサーションは、OAuth トークン エンドポイントにポストされます。 エンドポイントはアサーションを処理し、アプリの事前の承認に基づいてアクセス トークンを発行します。 クライアントでは、更新トークンを持つ必要も保存する必要もありません。また、トークン エンドポイントにクライアント シークレットを渡す必要もありません。

OAuth flow

Microsoft Entra ID にアプリケーションを登録する

ポータルでアプリケーションを登録することから始めます。

  1. ポータルの [アプリの登録] ページにサインインしてください (Graph API には v2.0 エンドポイントを使用しているため、Microsoft Entra 管理センターでアプリケーションを登録する必要があることにご注意ください。それ以外の場合は、Microsoft Entra ID で登録を使用できます)。
  2. [新規登録] を選択します。
  3. [アプリケーションの登録] ページが表示されたら、以下のアプリケーションの登録情報を入力します。
    1. [名前] - アプリのユーザーに表示されるわかりやすいアプリケーション名を入力します。
    2. [サポートされているアカウントの種類] - アプリケーションでサポートするアカウントを選択します。
    3. [リダイレクト URI (省略可能)] - 構築するアプリの種類として [Web クライアント] または [パブリック クライアント (モバイルとデスクトップ)] を選択してから、アプリケーションのリダイレクト URI (または応答 URL) を入力します。
    4. 終了したら、 [登録] を選択します。
  4. アプリケーション (クライアント) ID をメモします。
  5. 左側のウィンドウで、[証明書とシークレット] を選択します。 [クライアント シークレット] セクションで、 [新しいクライアント シークレット] をクリックします。 新しいクライアント シークレットをコピーしてください。このページから移動すると取得できなくなります。
  6. 左側のウィンドウで、 [API のアクセス許可][アクセス許可の追加] の順に選択します。 Outlook Graph API を使用する予定のため、 [Microsoft Graph] を選択し、 [委任されたアクセス許可] を選択してから、 [Tasks.read] を選択します。

AD FS から SAML アサーションを取得する

SOAP エンベロープを使用して SAML アサーションをフェッチするために、AD FS エンドポイントへの POST 要求を作成します。

Get SAML assertion

ヘッダー値:

Header values

AD FS 要求本文:

AD FS request body

この要求が正常にポストされると、AD FS から SAML アサーションを受け取るはずです。 SAML:Assertion タグ データのみが必要です。今後の要求で使用するには、base64 エンコードに変換してください。

SAML アサーションを使用して OAuth 2.0 トークンを取得する

AD FS アサーション応答を使用して OAuth 2.0 トークンをフェッチします。

  1. 以下に示すように、ヘッダー値を使用して POST 要求を作成します。

    POST request

  2. 要求の本文で、client_idclient_secret、および assertion (前の手順で取得した base64 エンコードの SAML アサーション) を置き換えます。

    Request body

  3. 要求が成功すると、Microsoft Entra ID からアクセス トークンを受け取ります。

OAuth 2.0 トークンを使用してデータを取得する

アクセス トークンを受け取ったら、Graph API (この例では Outlook タスク) を呼び出します。

  1. 前の手順でフェッチしたアクセス トークンを使用して GET 要求を作成します。

    GET request

  2. 要求が成功すると、JSON 応答を受け取ります。

次の手順

アプリの登録と認証フローについて詳しくは、以下をご覧ください。