共用方式為


使用開發人員帳戶在本機開發期間向 Azure 服務驗證 .NET 應用程式

在本機開發期間,應用程式必須向 Azure 進行驗證,才能使用不同的 Azure 服務。 使用下列其中一種方法在本機進行驗證:

本文說明如何使用開發人員帳戶搭配 Azure 身分識別程式庫支援的工具進行驗證。 在以下各節,您將了解:

  • 如何使用 Microsoft Entra 群組有效率地管理多個開發人員帳戶的許可權。
  • 如何將角色指派給開發人員帳戶以限定權限範圍。
  • 如何登入支援的本機開發工具。
  • 如何使用應用程式程式碼中的開發人員帳戶進行驗證。

驗證的開發人員支援工具

若要讓應用程式在使用開發人員的 Azure 認證進行本機開發期間向 Azure 進行驗證,開發人員必須從下列其中一個開發人員工具登入 Azure:

  • Azure CLI
  • Azure Developer CLI
  • Azure PowerShell
  • Visual Studio
  • Visual Studio Code

Azure 身分識別連結庫可以偵測開發人員是否從其中一個工具登入。 接著,程式庫可以透過工具取得 Microsoft Entra 存取令牌,以作為已登入使用者的身分驗證應用程式至 Azure。

此方法會利用開發人員的現有 Azure 帳戶來簡化驗證程式。 不過,開發人員的帳戶可能比應用程式所需的許可權還多,因此超過應用程式在生產環境中執行的許可權。 或者,您也可以 建立應用程式服務主體,以在本機開發期間使用,其範圍可限定為只有應用程式所需的存取權。

建立 Microsoft Entra 群組以供本機開發使用

建立Microsoft Entra 群組,以封裝應用程式在本機開發中所需的角色(許可權),而不是將角色指派給個別服務主體物件。 此方法提供下列優點:

  • 每個開發人員都有在群組層級指派的相同角色。
  • 如果應用程式需要新的角色,則只需要將它新增至應用程式的群組。
  • 如果新的開發人員加入小組,則會為開發人員建立新的應用程式服務主體,並新增至群組,確保開發人員有適當的許可權可處理應用程式。
  1. 流覽至 Azure 入口網站中 Microsoft Entra ID 概觀頁面。

  2. 從左側功能表中選取 [所有群組]。

  3. 在 [群組] 頁面上,選取 [新增群組]。

  4. 新增群組 頁面上,填寫下列表單欄位:

    • 群組類型:選取 [安全性]
    • 群組名:輸入包含應用程式或環境名稱參考的群組名稱。
    • 群組描述:輸入說明群組用途的描述。

    顯示如何在 Azure 入口網站中建立群組的螢幕快照。

  5. 選擇 [未選取成員] 連結於 [成員 ] 下以將成員新增至群組。

  6. 在開啟的飛出視窗中,搜尋您稍早建立的服務主體,並從篩選的結果中選取它。 在面板底部選擇 [] 按鈕 [] 以確認您的選擇。

  7. 選取 建立 以在 新增群組 頁面底部建立群組,並返回 所有群組 頁面。 如果您沒有看到列出的新群組,請稍候一下並重新整理頁面。

將角色指派給群組

接下來,決定您的應用程式需要哪些資源的角色(許可權),並將這些角色指派給您所建立的 Microsoft Entra 群組。 群組可以在資源、資源群組或訂閱範圍指派角色。 此範例示範如何在資源群組範圍中指派角色,因為大部分的應用程式都會將其所有 Azure 資源群組組成單一資源群組。

  1. 在 Azure 入口網站中,流覽至包含您應用程式的資源群組 概觀 頁面。

  2. 從左側導覽選擇 存取控制 (IAM)

  3. 在 [訪問控制 (IAM)] 頁面上,選取 [+ 加],然後從下拉功能表中選擇 [指派角色]。 [新增角色指派] 頁面提供數個索引標籤來設定和指派角色。

  4. 在「角色」分頁中,使用搜尋方塊找出您想指派的角色。 選擇角色,然後選擇 下一步

  5. 在 [成員] 頁籤上:

    • 針對 指派存取權給 值,請選取 使用者、群組或服務主體
    • 針對 [成員] 的值,選擇 [+ 選取成員] 以開啟 [選取成員] 的飛出視窗面板
    • 搜尋您稍早建立的 Microsoft Entra 群組,並從篩選的結果中選取它。 選擇 ,然後選取,以選取群組並關閉浮動面板。
    • 請在 成員 索引標籤的底部選取 檢閱 + 指派

    顯示如何將角色指派給 Microsoft Entra 群組的螢幕快照。

  6. 檢閱 + 指派 索引標籤上,選取頁面底部的 檢閱 + 指派

使用開發人員工具登入 Azure

接下來,使用數個開發人員工具之一登入 Azure,以在開發環境中執行驗證。 您驗證的帳戶也應該存在於您稍早建立和設定的 Microsoft Entra 群組中。

使用 Visual Studio 2017 或更新版本的開發人員可以透過 IDE 使用其開發人員帳戶進行驗證。 使用 DefaultAzureCredentialVisualStudioCredential 的應用程式可以在本機執行時探索及使用此帳戶來驗證應用程式要求。 當您直接從 Visual Studio 將應用程式發佈至 Azure 時,也會使用此帳戶。

這很重要

您必須 安裝 Azure 開發 工作負載,才能啟用 Azure 驗證、開發和部署的 Visual Studio 工具。

  1. 在 Visual Studio 內,流覽至 [工具]>[選項] 以開啟 [選項] 對話框。

  2. 在頂端的 [搜尋選項] 方塊中,輸入 Azure 來篩選可用的選項。

  3. 在 [Azure 服務驗證] 下,選擇 [帳戶選取]。

  4. 請從選擇帳戶下拉式功能表中選擇,然後新增一個Microsoft帳戶。

  5. 在開啟的視窗中,輸入所需 Azure 帳戶的認證,然後確認您的輸入。

    顯示如何使用Visual Studio登入 Azure 的螢幕快照。

  6. 選取確定 以關閉選項對話框。

從您的應用程式向 Azure 服務進行驗證

Azure Identity 函式庫提供了支援各種情境及 Microsoft Entra 認證流程的實作TokenCredential。 接下來的步驟將示範如何在本地管理使用者帳號時,使用 DefaultAzureCredential 或特定開發工具的憑證。

實作程序代碼

完成下列步驟:

  1. 在您的專案中新增 Azure.IdentityMicrosoft.Extensions.Azure 套件的參考:

    dotnet add package Azure.Identity
    dotnet add package Microsoft.Extensions.Azure
    
  2. Program.cs中,為 usingAzure.Identity 的命名空間加入Microsoft.Extensions.Azure指令。

  3. 使用對應的 Add前置擴充方法註冊 Azure 服務用戶端。

    Azure 服務可透過 Azure SDK 用戶端函式庫中的專用用戶端類別存取。 註冊這些客戶端類型,這樣你才能透過應用程式的相依注入存取它們。

  4. 將一個TokenCredential實例傳遞給UseCredential方法。 常見的 TokenCredential 例子包括:

    • 一個 DefaultAzureCredential 針對本地開發進行優化的實例。 此範例將環境變數 AZURE_TOKEN_CREDENTIALS 設定為 dev。 如需詳細資訊,請參閱 排除認證類型類別

      builder.Services.AddAzureClients(clientBuilder =>
      {
          clientBuilder.AddBlobServiceClient(
              new Uri("https://<account-name>.blob.core.windows.net"));
      
          DefaultAzureCredential credential = new(
              DefaultAzureCredential.DefaultEnvironmentVariableName);
          clientBuilder.UseCredential(credential);
      });
      
    • 對應特定開發工具的憑證實例,例如 VisualStudioCredential

      builder.Services.AddAzureClients(clientBuilder =>
      {
          clientBuilder.AddBlobServiceClient(
              new Uri("https://<account-name>.blob.core.windows.net"));
      
          VisualStudioCredential credential = new();
          clientBuilder.UseCredential(credential);
      });
      

    小提示

    當你的團隊使用多個開發工具與 Azure 進行認證時,建議使用本地開發優化的實例 DefaultAzureCredential ,而非工具專屬憑證。