クイック スタート: 保護された Web API にアクセスする .NET コンソール アプリ

このクイック スタートでは、サンプルの .NET コンソール アプリケーションを使用し、.NET 用 Microsoft 認証ライブラリ (MSAL) を使って、保護された Web API に独自の ID としてアクセスします。 アプリケーションはデーモン アプリケーション (機密クライアント アプリケーション) であり、クライアント資格情報 OAuth フローを使用して、Microsoft Graph API を呼び出すアクセス トークンを取得します。

前提条件

アプリケーションとレコードの識別子を登録する

登録を完了するには、アプリケーションに名前を指定し、サポートされているアカウントの種類を指定します。 登録すると、アプリケーションの [概要] ペインに、アプリケーションのソース コードに必要な識別子が表示されます。

  1. Microsoft Entra 管理センターにサインインします。

  2. 複数のテナントにアクセスできる場合は、上部のメニューの [設定] アイコン を使い、[ディレクトリとサブスクリプション] メニューからアプリケーションを登録するテナントに切り替えます。

  3. [ID]>[アプリケーション]>[アプリ登録] の順に進み、[新規登録] を選択します。

  4. アプリケーションの [名前] (identity-client-daemon-app など) を入力します。

  5. [サポートされているアカウントの種類] で、 [この組織のディレクトリ内のアカウントのみ] を選択します。 さまざまなアカウントの種類の詳細については、[選択に関するヘルプ] オプションを選択します。

  6. [登録] を選択します。

    Microsoft Entra 管理センターで名前を入力し、アカウントの種類を選ぶ方法を示すスクリーンショット。

  7. 登録が完了すると、アプリケーションの [概要] ペインが表示されます。 アプリケーションのソース コードで使用するディレクトリ (テナント) IDアプリケーション (クライアント) IDオブジェクト ID を記録します。

    Microsoft Entra 管理センターの概要ページに表示される識別子の値を示すスクリーンショット。

    Note

    サポートされているアカウントの種類は、「アプリケーションによってサポートされるアカウントを変更する」を参照して変更することができます。

クライアント シークレットの作成

  1. Microsoft Entra 管理センターで、[ID]>[アプリケーション]>[アプリの登録] の順に進みます。
  2. 先ほど登録したアプリケーションを選択します。
  3. アプリケーションの [概要] ペインで、[証明書とシークレット]>[新しいクライアント シークレット] を選択します。
  4. [説明] フィールドにシークレットの説明を入力します。
  5. シークレットの有効期限を選択します。
  6. [追加] を選択します。
  7. クライアント シークレットの [値] を記録します。 値は 1 回しか表示されないので、必ず記録してください。

サンプル アプリケーションをクローンまたはダウンロードする

サンプル アプリケーションを取得するには、GitHub から複製するか、.zip ファイルとしてダウンロードします。

  • サンプルをクローンするには、コマンド プロンプトを開き、プロジェクトを作成する場所に移動し、次のコマンドを入力します。

    git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
    
  • .zip ファイルをダウンロードします。 名前の長さが 260 文字未満のファイル パスに抽出します。

プロジェクトを構成する

  1. IDE で、サンプルが含まれているプロジェクト フォルダー ms-identity-docs-code-dotnet/console-daemon を開きます。

  2. 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 の値に置き換えます。

アプリケーションの実行

  1. ターミナルで、プロジェクト ディレクトリ ms-identity-docs-code-dotnet/console-daemon に移動します。

  2. 次のコマンドを実行し、アプリケーションをビルドして実行します。

    dotnet run
    
  3. アプリケーションが実行され、次のような応答が表示されます (簡潔にするために短縮してあります)。

    {
    "@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,
    ...
    }