クイック スタート: ASP.NET Core Web アプリからユーザーのサインインと Microsoft Graph API の呼び出しを行う

このクイックスタートでは、ASP.NET Core Web アプリのサンプルを使用して、承認コード フローを使用してユーザーをサインインさせ、Microsoft Graph API を呼び出す方法を示します。 このサンプルでは、.NET 用 Microsoft Authentication LibraryMicrosoft Identity Web を使用して認証を処理します。

前提条件

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

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

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

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

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

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

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

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

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

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

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

    Note

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

プラットフォーム リダイレクト URI を追加する

アプリの登録に対してアプリの種類を指定するには、次の手順に従います。

  1. [管理] で、 [認証] を選択します。
  2. [プラットフォーム構成] で、[プラットフォームの追加] を選択し、[Web] を選択 します。
  3. [リダイレクト URI] には、「https://localhost:5001/signin-oidc」と入力します。
  4. [フロントチャネル ログアウト URL] で、サインアウト用に「https://localhost:5001/signout-callback-oidc」と入力します。
  5. [構成] を選択して変更を保存します。

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

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

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

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

自己署名証明書を作成してアップロードする

  1. ターミナルを使用して、次のコマンドを使用して、プロジェクト ディレクトリに自己署名証明書を作成します。

    cd ms-identity-docs-code-dotnet\web-app-aspnet\
    dotnet dev-certs https -ep ./certificate.crt --trust
    
  2. Microsoft Entra 管理センターに戻り、[管理][証明書とシークレット]>[証明書のアップロード] の順に選択します。

  3. [証明書 (0)] タブを選択し、[証明書のアップロード] を選択します。

  4. [証明書のアップロード] ウィンドウが表示されます。 アイコンを使用して、前の手順で作成した証明書ファイルに移動し、[開く] を選択します。

  5. 証明書の説明 (例: aspnet-web-app の証明書) を入力し、[追加] を選択します。

  6. 次の手順で使用する [サムプリント] の値を記録します。

プロジェクトを構成する

  1. IDE で、サンプルを含むプロジェクト フォルダー ms-identity-docs-code-dotnet\web-app-aspnet を開きます。

  2. appsettings.json を開き、ファイルの内容を次のスニペットに置き換えます。

    {
    "AzureAd": {
      "Instance": "https://login.microsoftonline.com/",
      "TenantId": "Enter the tenant ID obtained from the Microsoft Entra admin center",
      "ClientId": "Enter the client ID obtained from the Microsoft Entra admin center",
      "ClientCertificates": [
        {
          "SourceType": "StoreWithThumbprint",
          "CertificateStorePath": "CurrentUser/My",
          "CertificateThumbprint": "Enter the certificate thumbprint obtained the Microsoft Entra admin center"
        }   
      ],
      "CallbackPath": "/signin-oidc"
    },
      "DownstreamApi": {
        "BaseUrl": "https://graph.microsoft.com/v1.0/",
        "RelativePath": "me",
        "Scopes": [ 
          "user.read" 
        ]
      },
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning"
        }
      },
      "AllowedHosts": "*"
    }
    
    • TenantId - アプリケーションが登録されているテナントの識別子。 引用符で囲まれた文字を、登録したアプリケーションの概要ページから先ほど記録した Directory (tenant) ID に置き換えます。
    • ClientId - クライアントとも呼ばれる、アプリケーションの識別子。 引用符で囲まれた文字を、登録したアプリケーションの概要ページから先ほど記録した Application (client) ID の値に置き換えます。
    • ClientCertificates - 自己署名証明書は、アプリケーションでの認証に使用されます。 CertificateThumbprint のテキストを、以前に記録した証明書のサムプリントに置き換えます。

アプリケーションを実行し、サインインします

  1. プロジェクト ディレクトリで、ターミナルを使用して次のコマンドを入力します。

    dotnet run
    
  2. ターミナルに表示される https の URL (例: https://localhost:5001) をコピーし、ブラウザーに貼り付けます。 ブラウザーのプライベート セッションまたはシークレット セッションを使用することを推奨します。

  3. 手順に従って必要な詳細情報を入力し、Microsoft アカウントでサインインしてください。 ワンタイム パスコードを送信できるように、メール アドレスを提供するように要求されます。 プロンプトが表示されたら、パスコードを入力します。

  4. アプリケーションから、アクセス権を付与したデータへのアクセスを維持し、サインインしてプロファイルを読み取るためのアクセス許可を要求されます。 [Accept](承認) を選択します。

  5. 次のスクリーンショットは、アプリケーションにサインインし、Microsoft Graph API からプロファイルの詳細にアクセスしたことを示しています。

    API 呼び出しの結果を示すスクリーンショット。

アプリケーションからサインアウトする

  1. ページの右上隅にある [サインアウト] リンクを選択します。
  2. サインアウトするアカウントを選択するように要求されます。 サインインに使用したアカウントを選択します。
  3. サインアウトしたことを示すメッセージが表示されます。ブラウザー ウィンドウを閉じます。