分享方式:


快速入門:從 ASP.NET Core 應用程式 Web 應用程式登入使用者並呼叫 Microsoft Graph API

本快速入門會使用範例 ASP.NET Core Web 應用程式,示範如何使用授權碼流程來登入使用者,並呼叫 Microsoft Graph API。 此範例會使用適用於 .NET 的 Microsoft 驗證程式庫Microsoft Identity Web 程式庫來處理驗證。

必要條件

註冊應用程式和記錄識別碼

若要完成註冊,請提供應用程式名稱,並指定支援的帳戶類型。 註冊之後,應用程式 [概觀] 窗格會顯示應用程式原始程式碼中所需的識別碼。

  1. 登入 Microsoft Entra 系統管理中心。

  2. 如果您有多個租用戶的存取權,請使用頂端功能表中的 [設定] 圖示 ,從 [目錄 + 訂用帳戶] 功能表來切換要在其中註冊應用程式的租用戶。

  3. 瀏覽至 [身分識別]>[應用程式]>[應用程式註冊],選取 [新增註冊]

  4. 輸入應用程式的 [名稱],例如 identity-client-web-app

  5. 在 [支援的帳戶類型] 區段中,選取 [僅限此組織目錄中的帳戶]。 如需不同帳戶類型的資訊,請選取 [協助我選擇] 選項。

  6. 選取註冊

    顯示如何在 Microsoft Entra 系統管理中心輸入名稱並選取帳戶類型的螢幕擷取畫面。

  7. 註冊完成時,將會顯示應用程式的 [概觀] 窗格。 記錄 [目錄 (租用戶) 識別碼] 和 [應用程式 (用戶端) 識別碼],以用於您的應用程式原始程式碼。

    顯示 Microsoft Entra 系統管理中心概觀頁面上識別碼值的螢幕擷取畫面。

    注意

    您可以參考修改應用程式所支援的帳戶,以變更 [支援的帳戶類型]

新增平台重新導向 URL

若要在應用程式註冊中指定您的應用程式類型,請遵循下列步驟:

  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,並將其貼到瀏覽器中。 建議您使用私人或 Incognito 瀏覽器工作階段。

  3. 請遵循步驟並輸入必要的詳細資料,以使用您的 Microsoft 帳戶登入。 系統會要求您提供電子郵件地址,以便將一次性密碼傳送給您。 出現提示時,請輸入程式碼。

  4. 應用程式會要求權限,讓您為應用程式授與的資料存取權可保有存取權,以及登入並讀取設定檔。 選取 [接受]。

  5. 下列螢幕擷取畫面隨即出現,指出您已登入應用程式,並已從 Microsoft Graph API 存取您的設定檔詳細資料。

    描述 API 呼叫結果的螢幕擷取畫面。

從應用程式登出

  1. 尋找頁面右上角的 [登出] 連結,然後加以選取。
  2. 系統會提示您挑選要登出的帳戶。 選取您用來登入的帳戶。
  3. 隨即出現訊息,指出您已登出。您現在可以關閉瀏覽器視窗。