シナリオ: Web API を呼び出す Web アプリ (サーバー アプリ)
AD FS 2019 によって認証されたユーザーをサインインさせ、MSAL ライブラリを使用して Web API を呼び出すためのトークンを取得する、Web アプリを構築する方法について説明します。
この記事を読む前に、AD FS の概念と認証コード付与フローについて理解しておく必要があります
概要
このフローでは、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) として登録する方法について説明します。
[AD FS の管理] で、 [アプリケーション グループ] を右クリックし、 [アプリケーション グループの追加] を選択します。
アプリケーション グループ ウィザードで、[名前] に「WebAppToWebApi」と入力し、[クライアント サーバー アプリケーション] で [Web API にアクセスするサーバー アプリケーション] テンプレートを選びます。 [次へ] をクリックします。
[クライアント識別子] の値をコピーします。 この値は、後でアプリケーションのWeb.config ファイルにあるida:ClientId の値として使用されます。 [リダイレクト URI] に次を入力します: https://localhost:44326. [追加] をクリックします。 [次へ] をクリックします。
[アプリケーションの資格情報の構成] 画面で、[共有シークレットを生成する] をオンにして、シークレットをコピーします。 このシークレットは、後でアプリケーションのWeb.config ファイルにあるida:ClientSecret の値として使用されます。 次へ をクリックします。
[Web API の構成] 画面で、[識別子] に次のように入力します: https://webapi. [追加] をクリックします。 次へ をクリックします。 この値は、後でアプリケーションの Web.config ファイルにある ida:GraphResourceId に使用されます。
[アクセス制御ポリシーの適用] 画面で、[すべてのユーザーを許可] を選んで、[次へ] をクリックします。
[アプリケーションのアクセス許可の構成] 画面で、openid と user_impersonation が選択されていることを確認し、[次へ] をクリックします。
[概要] 画面で、[次へ] をクリックします。
[完了] 画面で、[閉じる] をクリックします。
コードの構成
このセクションでは、ユーザーをサインインさせ、Web API を呼び出すトークンを取得する、ASP.NET Web アプリを構成する方法について説明します
こちらからサンプルをダウンロードします
Visual Studio を使用してサンプルを開きます
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/adfsida:Resource
- [AD FS でのアプリの登録] セクションの #5 から 識別子 の値を入力します。
サンプルをテストする
このセクションでは、構成されたサンプルをテストする方法を説明します。
コードの変更が行われたら、ソリューションをリビルドします。
Visual Studio の上部で Internet Explorer が選ばれていることを確認して、緑色の矢印をクリックします。
[ホーム ページ] で、[サインイン] をクリックします。
AD FS サインイン ページにリダイレクトされます。 要求に従ってサインインしてください。
サインインしたら、[アクセス トークン] をクリックします。
[アクセス トークン] をクリックすると、Web API を呼び出してアクセス トークン情報が取得されます。