適用対象: 従業員テナント緑
外部テナント (詳細)
このクイック スタートでは、サンプル Web アプリを使用して、Microsoft ID プラットフォームを使用して ASP.NET Web API を保護する方法について説明します。 このサンプルでは、 Microsoft Authentication Library (MSAL) を使用して認証と承認を処理します。
[前提条件]
- アクティブなサブスクリプションを持つ Azure アカウント。 アカウントを無料で作成します。
-
Microsoft Entra 管理センターで新しいアプリを登録し、アプリの [概要] ページからその識別子を記録します。 詳細については、「 アプリケーションの登録」を参照してください。
- 名前: NewWebAPI1
- サポートされているアカウントの種類: この組織のディレクトリ内のアカウントのみ (シングル テナント)
- Visual Studio 2022。 Visual Studio を無料でダウンロードします。
API を公開する
API が登録されると、API がクライアント アプリケーションに公開するスコープを定義することで、そのアクセス許可を構成することができます。 クライアント アプリケーションは、アクセス トークンとその要求を保護された Web API に渡すことで、操作を実行するためのアクセス許可を要求します。 そして Web API は、受け取ったアクセス トークンに必要なスコープが含まれている場合のみ、要求された操作を実行します。
[管理] で、[API の公開] を選択>スコープを追加します。
api://{clientId}
を選択して、提案されたアプリケーション ID URI () を受け入れ、次の情報を入力します。-
[スコープ名] に「
access_as_user
」と入力します。 - [ 同意できるユーザー] で、[ 管理者とユーザー ] オプションが選択されていることを確認します。
- [ 管理者の同意の表示名 ] ボックスに「
Access TodoListService as a user
」と入力します。 - [ 管理者の同意の説明 ] ボックスに「
Accesses the TodoListService web API as a user
」と入力します。 - [ ユーザーの同意の表示名 ] ボックスに「
Access TodoListService as a user
」と入力します。 - [ ユーザーの同意の説明 ] ボックスに「
Accesses the TodoListService web API as a user
」と入力します。 - [状態] の場合は、[有効]のままにします。
-
[スコープ名] に「
[ スコープの追加] を選択します。
サンプル アプリケーションを複製またはダウンロードする
サンプル アプリケーションを取得するには、GitHub から複製するか、 .zip ファイルとしてダウンロードします。
git clone https://github.com/AzureADQuickStarts/AppModelv2-NativeClient-DotNet.git
ヒント
Windows におけるパスの長さの制限に起因したエラーを防ぐため、ドライブのルートに近いディレクトリをアーカイブの展開先またはリポジトリのクローン先とすることをお勧めします。
サンプル アプリケーションを構成する
登録済みの Web API と一致するようにコード サンプルを構成します。
Visual Studio でソリューションを開き、TodoListService プロジェクトのルートにある appsettings.json ファイルを開きます。
Enter_the_Application_Id_here
および の両方のプロパティで、ClientID
の値をAudience
ポータルで登録したアプリケーションのクライアント ID (アプリケーション ID) に置き換えます。
新しいスコープを app.config ファイルに追加する
TodoListClient app.config ファイルに新しいスコープを追加するには、次の手順に従います。
TodoListClient プロジェクトのルート フォルダーで、 app.config ファイルを開きます。
TodoListServiceScope
パラメーターで TodoListService プロジェクトに登録したアプリケーションのアプリケーション ID を貼り付け、{Enter the Application ID of your TodoListService from the app registration portal}
文字列を置き換えます。
注
アプリケーション ID の形式が api://{TodoListService-Application-ID}/access_as_user
になっていることを確認してください ({TodoListService-Application-ID}
は TodoListService アプリのアプリケーション ID を表す GUID です)。
Web アプリを登録する (TodoListClient)
Microsoft Entra 管理センターの アプリ登録 で TodoListClient アプリを登録し、TodoListClient プロジェクトでコードを構成します。 クライアントとサーバーが同じアプリケーションと見なされる場合は、手順 2 で登録したアプリケーションを再利用できます。 ユーザーが個人用 Microsoft アカウントでサインインできるようにするには、同じアプリケーションを使用します。
アプリを登録する
TodoListClient アプリを登録するには、これらの手順に従います。
Microsoft Entra 管理センターに、少なくともクラウド アプリケーション管理者としてサインインします。
Entra ID>App registrations に移動し、[新規登録] を選択します。
[ 新しい登録] を選択します。
[ アプリケーションの登録] ページ が開いたら、アプリケーションの登録情報を入力します。
- [ 名前 ] セクションに、アプリのユーザーに表示されるわかりやすいアプリケーション名 ( NativeClient-DotNet-TodoListClient など) を入力します。
- [サポートされているアカウントの種類] で、任意の組織ディレクトリの [アカウント] を選択します。
- [ 登録 ] を選択してアプリケーションを作成します。
注
TodoListClient プロジェクト app.config ファイルでは、
ida:Tenant
の既定値はcommon
に設定されます。 指定できる値は次のとおりです。-
common
: 職場または学校のアカウントまたは個人の Microsoft アカウントを使用してサインインできます (前の手順 で任意の組織のディレクトリで [アカウント] を選択したため)。 -
organizations
:職場または学校アカウントを使用してサインインできます。 -
consumers
:Microsoft の個人用アカウントを使用してのみサインインできます。
アプリの [概要 ] ページで [ 認証] を選択し、次の手順を実行してプラットフォームを追加します。
- [ プラットフォームの構成] で、[ プラットフォームの追加] ボタンを 選択します。
- モバイル アプリケーションとデスクトップ アプリケーションの場合は、[モバイル アプリケーションとデスクトップ アプリケーション] を選択します。
-
[リダイレクト URI] で、[
https://login.microsoftonline.com/common/oauth2/nativeclient
] チェック ボックスをオンにします。 - 構成を選択します。
API のアクセス許可を選択し、次の手順を実行してアクセス許可を追加します。
- [ アクセス許可の追加] ボタンを 選択します。
- [ マイ API ] タブを選択します。
- API の一覧で、 AppModelv2-NativeClient-DotNet-TodoListService API または Web API に入力した名前を選択します。
- まだ選択されていない場合は、[ access_as_user アクセス許可] チェック ボックスをオンにします。 必要に応じて検索ボックスを使用します。
- [ アクセス許可の追加] ボタンを選択します。
プロジェクトを構成する
app.config ファイルにアプリケーション ID を追加して、TodoListClient プロジェクトを構成します。
アプリ登録ポータルの [概要] ページで、アプリケーション (クライアント) ID の値をコピーします。
TodoListClient プロジェクトのルート フォルダーから 、app.config ファイルを開き、
ida:ClientId
パラメーターにアプリケーション ID の値を貼り付けます。
サンプル アプリケーションの実行
両方のプロジェクトを開始します。 Visual Studio ユーザーの場合は次のとおりです。
Visual Studio ソリューションを右クリックし、[プロパティ] を選択します
[共通プロパティ] で、[スタートアップ プロジェクト] を選択し、[複数のスタートアップ プロジェクト] を選択します。
両方のプロジェクトで、アクションとして [開始 ] を選択します
上向きの矢印を使用して TodoListService サービスを一覧の最初の位置に移動し、最初に開始されるようにします。
TodoListClient プロジェクトにサインインして実行します。
F5 キーを押して、プロジェクトを開始します。 サービスのページと、デスクトップ アプリケーションが開きます。
TodoListClient の右上にある [ サインイン] を選択し、アプリケーションの登録に使用したのと同じ資格情報でサインインするか、同じディレクトリ内のユーザーとしてサインインします。
初めてサインインする場合は、TodoListService Web API に同意するように求められることがあります。
TodoListService Web API にアクセスして To-Do リストを 操作するために、サインインは access_as_user スコープへのアクセス トークンも要求します。
クライアント アプリケーションを事前承認する
Web API にアクセスするクライアント アプリケーションを事前承認することで、他のディレクトリのユーザーに Web API へのアクセスを許可することができます。 これを行うには、クライアント アプリから Web API の事前認証されたアプリケーションの一覧にアプリケーション ID を追加します。 事前認証されたクライアントを追加することで、ユーザーは同意を得ることなく Web API にアクセスできるようになります。
- アプリ登録ポータルで、TodoListService アプリのプロパティを開きます。
- [ API の公開 ] セクションの [ 承認されたクライアント アプリケーション] で、[ クライアント アプリケーションの追加] を選択します。
- [ クライアント ID ] ボックスに、TodoListClient アプリのアプリケーション ID を貼り付けます。
- [ 承認されたスコープ ] セクションで、
api://<Application ID>/access_as_user
Web API のスコープを選択します。 - [ アプリケーションの追加] を選択します。
プロジェクトの実行
- F5 キーを押してプロジェクトを実行します。 TodoListClient アプリが開きます。
- 右上にある [ サインイン] を選択し、個人の Microsoft アカウント ( live.com 、 hotmail.com アカウント、職場または学校アカウントなど) を使用してサインインします。
省略可能:サインイン アクセスを特定のユーザーに制限する
既定では、 outlook.com アカウントや live.com アカウント、Microsoft Entra ID と統合されている組織の職場または学校アカウントなどの個人アカウントは、トークンを要求して Web API にアクセスできます。
アプリケーションにサインインできるユーザーを指定するには、TenantId
ファイルの プロパティを変更します。
次のステップ
Microsoft ID プラットフォームを使用して ASP.NET Core Web API を保護する方法について説明します。