次の方法で共有


シナリオ: Web API を呼び出す Web アプリ (サーバー アプリ)

AD FS 2019 によって認証されたユーザーをサインインさせ、MSAL ライブラリを使用して Web API を呼び出すためのトークンを取得する、Web アプリを構築する方法について説明します。

この記事を読む前に、AD FS の概念認証コード付与フローについて理解しておく必要があります

概要

Web API を呼び出す Web アプリの概要

このフローでは、Web アプリ (サーバー アプリ) に認証を追加します。これにより、ユーザーのサインインが可能になり、Web API が呼び出されます。 Web アプリから Web API を呼び出すには、MSAL の AcquireTokenByAuthorizationCode トークン取得メソッドを使用します。 認証コード フローを使用して、取得したトークンをトークン キャッシュに格納します。 その後、コントローラーは必要に応じてキャッシュからトークンをサイレントに取得します。 必要に応じて、MSAL によってトークンが更新されます。

Web API を呼び出す Web アプリ:

  • 機密クライアント アプリケーションです。
  • シークレット (アプリケーション共有シークレット、証明書、または AD アカウント) を AD FS に登録されます。 このシークレットは、トークンを取得するための AD FS の呼び出しにおいて渡されます。

AD FS に Web アプリを登録し、Web API を呼び出すためのトークンを取得するように構成するには、こちら で入手できるサンプルを使用して、アプリの登録とコードの構成手順を確認します。

前提条件

  • GitHub クライアント ツール
  • AD FS 2019 以降が構成および実行されている
  • Visual Studio 2013 以降

AD FS でのアプリの登録

このセクションでは、AD FS で Web アプリを機密クライアントとして登録し、Web API を 証明書利用者 (RP) として登録する方法について説明します。

  1. [AD FS の管理] で、 [アプリケーション グループ] を右クリックし、 [アプリケーション グループの追加] を選択します。

  2. アプリケーション グループ ウィザードで、[名前] に「WebAppToWebApi」と入力し、[クライアント サーバー アプリケーション][Web API にアクセスするサーバー アプリケーション] テンプレートを選びます。 [次へ] をクリックします。

    [Web API にアクセスするサーバー アプリケーション] テンプレートが強調表示されているアプリケーション グループの追加ウィザードの [ようこそ] ページのスクリーンショット。

  3. [クライアント識別子] の値をコピーします。 この値は、後でアプリケーションのWeb.config ファイルにあるida:ClientId の値として使用されます。 [リダイレクト URI] に次を入力します: https://localhost:44326. [追加] をクリックします。 [次へ] をクリックします。

    正しいクライアント識別子とリダイレクト URI が表示されているアプリケーション グループの追加ウィザードの [サーバー アプリケーション] ページのスクリーンショット。

  4. [アプリケーションの資格情報の構成] 画面で、[共有シークレットを生成する] をオンにして、シークレットをコピーします。 このシークレットは、後でアプリケーションのWeb.config ファイルにあるida:ClientSecret の値として使用されます。 次へ をクリックします。

    [共有シークレットを生成する] オプションが選択され、生成された共有シークレットが設定されていることを示す、アプリケーション グループの追加ウィザードの [アプリケーションの資格情報の構成] アプリケーション ページのスクリーンショット。

  5. [Web API の構成] 画面で、[識別子] に次のように入力します: https://webapi. [追加] をクリックします。 次へ をクリックします。 この値は、後でアプリケーションの Web.config ファイルにある ida:GraphResourceId に使用されます。

    正しい識別子が表示されている、アプリケーション グループの追加ウィザードの [Web API の構成] ページのスクリーンショット。

  6. [アクセス制御ポリシーの適用] 画面で、[すべてのユーザーを許可] を選んで、[次へ] をクリックします。

    [すべてのユーザーを許可] オプションが強調表示されている、アプリケーション グループの追加ウィザードの [アクセス制御ポリシーの選択] ページのスクリーンショット。

  7. [アプリケーションのアクセス許可の構成] 画面で、openiduser_impersonation が選択されていることを確認し、[次へ] をクリックします。

    OpenID とユーザーの偽装のオプションが選択されていることを示す、アプリケーション グループの追加ウィザードの [アプリケーションのアクセス許可の構成] ページのスクリーンショット。

  8. [概要] 画面で、[次へ] をクリックします。

  9. [完了] 画面で、[閉じる] をクリックします。

コードの構成

このセクションでは、ユーザーをサインインさせ、Web API を呼び出すトークンを取得する、ASP.NET Web アプリを構成する方法について説明します

  1. こちらからサンプルをダウンロードします

  2. Visual Studio を使用してサンプルを開きます

  3. web.config ファイルを開きます。 次のように変更します。

    • ida:ClientId - [AD FS でのアプリの登録] セクションの #3 から クライアント識別子 の値を入力します。

    • ida:ClientSecret - [AD FS でのアプリの登録] セクションの #4 から シークレット の値を入力します。

    • ida:RedirectUri - [AD FS でのアプリの登録] セクションの #3 から リダイレクト URI の値を入力します。

    • ida:Authority -https://[お使いの AD FS ホスト名]/adfs と入力します。 例: https://adfs.contoso.com/adfs

    • ida:Resource - [AD FS でのアプリの登録] セクションの #5 から 識別子 の値を入力します。

      変更された値が示されている Web 構成ファイルのスクリーンショット。

サンプルをテストする

このセクションでは、構成されたサンプルをテストする方法を説明します。

  1. コードの変更が行われたら、ソリューションをリビルドします。

  2. Visual Studio の上部で Internet Explorer が選ばれていることを確認して、緑色の矢印をクリックします。

    [IIS Express (Internet Explorer)] オプションが強調されている Visual Studio UI のスクリーンショット。

  3. [ホーム ページ] で、[サインイン] をクリックします。

    [サインイン] オプションが強調されているホーム ページのスクリーンショット。

  4. AD FS サインイン ページにリダイレクトされます。 要求に従ってサインインしてください。

    [サインイン] ページのスクリーンショット。

  5. サインインしたら、[アクセス トークン] をクリックします。

    [アクセス トークン] オプションが強調されているホーム ページのスクリーンショット。

  6. [アクセス トークン] をクリックすると、Web API を呼び出してアクセス トークン情報が取得されます。

    アクセス トークンの情報が示されている [アクセス トークン] ページのスクリーンショット。

次の手順

AD FS OpenID 接続/OAuth フローとアプリケーション シナリオ