クイック スタート: 保護された Web API にアクセスする .NET コンソール アプリ
このクイック スタートでは、サンプルの .NET コンソール アプリケーションを使用し、.NET 用 Microsoft 認証ライブラリ (MSAL) を使って、保護された Web API に独自の ID としてアクセスします。 アプリケーションはデーモン アプリケーション (機密クライアント アプリケーション) であり、クライアント資格情報 OAuth フローを使用して、Microsoft Graph API を呼び出すアクセス トークンを取得します。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 まだお持ちでない場合は、無料のアカウント*を作成してください。
- .NET 6.0 SDK の最小要件
- Visual Studio 2022 または Visual Studio Code
アプリケーションとレコードの識別子を登録する
登録を完了するには、アプリケーションに名前を指定し、サポートされているアカウントの種類を指定します。 登録すると、アプリケーションの [概要] ペインに、アプリケーションのソース コードに必要な識別子が表示されます。
Microsoft Entra 管理センターにサインインします。
複数のテナントにアクセスできる場合は、上部のメニューの [設定] アイコン を使い、[ディレクトリとサブスクリプション] メニューからアプリケーションを登録するテナントに切り替えます。
[ID]>[アプリケーション]>[アプリ登録] の順に進み、[新規登録] を選択します。
アプリケーションの [名前] (identity-client-daemon-app など) を入力します。
[サポートされているアカウントの種類] で、 [この組織のディレクトリ内のアカウントのみ] を選択します。 さまざまなアカウントの種類の詳細については、[選択に関するヘルプ] オプションを選択します。
[登録] を選択します。
登録が完了すると、アプリケーションの [概要] ペインが表示されます。 アプリケーションのソース コードで使用するディレクトリ (テナント) ID、アプリケーション (クライアント) ID、オブジェクト ID を記録します。
Note
サポートされているアカウントの種類は、「アプリケーションによってサポートされるアカウントを変更する」を参照して変更することができます。
クライアント シークレットの作成
- Microsoft Entra 管理センターで、[ID]>[アプリケーション]>[アプリの登録] の順に進みます。
- 先ほど登録したアプリケーションを選択します。
- アプリケーションの [概要] ペインで、[証明書とシークレット]>[新しいクライアント シークレット] を選択します。
- [説明] フィールドにシークレットの説明を入力します。
- シークレットの有効期限を選択します。
- [追加] を選択します。
- クライアント シークレットの [値] を記録します。 値は 1 回しか表示されないので、必ず記録してください。
サンプル アプリケーションをクローンまたはダウンロードする
サンプル アプリケーションを取得するには、GitHub から複製するか、.zip ファイルとしてダウンロードします。
サンプルをクローンするには、コマンド プロンプトを開き、プロジェクトを作成する場所に移動し、次のコマンドを入力します。
git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
.zip ファイルをダウンロードします。 名前の長さが 260 文字未満のファイル パスに抽出します。
プロジェクトを構成する
IDE で、サンプルが含まれているプロジェクト フォルダー ms-identity-docs-code-dotnet/console-daemon を開きます。
Program.cs を開き、ファイルの内容を次のスニペットに置き換えます。
// Full directory URL, in the form of https://login.microsoftonline.com/<tenant_id> Authority = " https://login.microsoftonline.com/Enter_the_tenant_ID_obtained_from_the_Microsoft_Entra_admin_center", // 'Enter the client ID obtained from the Microsoft Entra admin center ClientId = "Enter the client ID obtained from the Microsoft Entra admin center", // Client secret 'Value' (not its ID) from 'Client secrets' in the Microsoft Entra admin center ClientSecret = "Enter the client secret value obtained from the Microsoft Entra admin center", // Client 'Object ID' of app registration in Microsoft Entra admin center - this value is a GUID ClientObjectId = "Enter the client Object ID obtained from the Microsoft Entra admin center"
Authority
- 機関は、MSAL がトークンを要求できるディレクトリを示す URL です。 Enter_the_tenant_ID を、先ほど記録したディレクトリ (テナント) ID の値に置き換えます。ClientId
- クライアントとも呼ばれる、アプリケーションの識別子。 引用符で囲まれた文字を、登録したアプリケーションの概要ページから先ほど記録したApplication (client) ID
の値に置き換えます。ClientSecret
- Microsoft Entra 管理センターでアプリケーションに対して作成されるクライアント シークレット。 クライアント シークレットの値を入力します。ClientObjectId
- クライアント アプリケーションのオブジェクト ID。 引用符で囲まれた文字を、登録したアプリケーションの概要ページから先ほど記録したObject ID
の値に置き換えます。
アプリケーションの実行
ターミナルで、プロジェクト ディレクトリ ms-identity-docs-code-dotnet/console-daemon に移動します。
次のコマンドを実行し、アプリケーションをビルドして実行します。
dotnet run
アプリケーションが実行され、次のような応答が表示されます (簡潔にするために短縮してあります)。
{ "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#applications/$entity", "id": "00001111-aaaa-2222-bbbb-3333cccc4444", "deletedDateTime": null, "appId": "00001111-aaaa-2222-bbbb-3333cccc4444", "applicationTemplateId": null, "disabledByMicrosoftStatus": null, "createdDateTime": "2021-01-17T15:30:55Z", "displayName": "identity-dotnet-console-app", "description": null, "groupMembershipClaims": null, ... }
関連するコンテンツ
- シリーズの「チュートリアル: Microsoft ID プラットフォームにアプリケーションを登録する」を使用して、この ASP.NET Web アプリをビルドして学習します。
- クイックスタート: Microsoft ID プラットフォームを使用して ASP.NET Core Web API を保護する
- クイック スタート: ASP.NET Web アプリを Azure App Service にデプロイする