分享方式:


快速入門:存取受保護 Web API 的 .NET 控制台應用程式

本快速入門使用範例 .NET 控制台應用程式,使用適用於 .NET 的 Microsoft 驗證程式庫 (MSAL) 來存取受保護的 Web API 作為自己的身分識別。 應用程式是機密用戶端應用程式的精靈應用程式,並使用客戶端認證 OAuth 流程來取得存取權杖以呼叫 Microsoft Graph API。

必要條件

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

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

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

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

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

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

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

  6. 選取註冊

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

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

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

    注意

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

建立用戶端密碼

  1. Microsoft Entra 系統管理中心中,瀏覽至 [身分識別]>[應用程式]>[應用程式註冊]
  2. 選取您稍早註冊過的應用程式。
  3. 在應用程式的 [概觀] 窗格中,選取 [憑證與秘密]>[新增客戶端密碼]
  4. 在 [描述] 欄位中輸入秘密的描述。
  5. 選取秘密的到期期限。
  6. 選取 [新增]。
  7. 記錄客戶端密碼值只會顯示一次,因此請務必加以記錄。

複製或下載範例應用程式

若要取得應用程式範例,您可以從 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 - 授權單位是一個 URL,指出 MSAL 可以向其要求權杖的目錄。 將 Enter_the_tenant_ID 取代為先前記錄的 Directory (tenant) 識別碼值。
    • ClientId - 應用程式 (也稱為用戶端) 的識別碼。 將引號中的文字取代為先前從已註冊應用程式概觀頁面記錄的 Application (client) ID 值。
    • ClientSecret - Microsoft Entra 系統管理中心為應用程式建立的客戶端密碼。 輸入客戶端密碼
    • ClientObjectId - 用戶端應用程式的物件識別碼。 將引號中的文字取代為先前從已註冊應用程式概觀頁面記錄的 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,
    ...
    }