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

開發人員必須在本機工作站上偵錯及測試雲端應用程式。 當應用程式在本機開發期間於開發人員的工作站上執行時,仍必須向應用程式使用的任何 Azure 服務進行驗證。 本文涵蓋如何使用開發人員的 Azure 認證,在本機開發期間向 Azure 驗證應用程式。

此圖顯示了在本機開發中執行的應用程式,使用開發人員工具識別連線至 Azure 資源。

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

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

Azure 身分識別程式庫可以偵測開發人員是否從其中一個工具登入。 接著,程式庫可以透過工具取得 Microsoft Entra 存取權杖,以將應用程式作為登入使用者向 Azure 進行驗證。

這種方法對開發小組而言最容易設定,因為使用的是開發人員現有 Azure 帳戶。 不過,開發人員帳戶擁有的權限可能比應用程式需要的權限還多,因此超出應用程式在實際執行環境中執行時的權限。 您可以改為建立在本機開發期間使用的應用程式服務主體,設定其權限範圍與應用程式需要的存取權相符。

1 - 建立 Microsoft Entra 群組以進行本機開發

由於應用程式工作幾乎都需要多名開發人員,因此建議使用 Microsoft Entra 群組來封裝應用程式在本機開發中需要的角色 (權限)。 這些方法提供下列優點:

  • 由於角色是在群組層級指派,因此指派給每位開發人員的角色都能保證相同。
  • 如果應用程式需要新角色,只要在應用程式的群組新增即可。
  • 如果新的開發人員加入小組,他們會在新增至群組之後,取得應用程式工作的必要權限。

如果您的開發小組已經有 Microsoft Entra 群組,您可以使用該群組。 否則,請完成下列步驟以建立 Microsoft Entra 群組。

指示 Screenshot
在頁面頂端的搜尋方塊中輸入 Microsoft Entra ID,瀏覽至 Azure 入口網站中的 [Microsoft Entra ID] 頁面。 在 [服務] 區段下,選取 [Microsoft Entra ID] 螢幕擷取畫面:顯示如何使用 Azure 入口網站頂端搜尋列來搜尋並瀏覽到 Microsoft Entra ID 頁面。
在 [Microsoft Entra ID] 頁面中,選取側功能表內的 [群組] 螢幕擷取畫面:顯示 [群組] 功能表項目在 Microsoft Entra ID 預設目錄頁面左側功能表中的位置。
在 [所有群組] 頁面中,選取 [新增群組] 螢幕擷取畫面:顯示 [新增群組] 按鈕在 [所有群組] 頁面中的位置。
在 [新增群組] 頁面進行下列設定:
  1. 從 [群組類型] 下拉式清單中選取 [安全性]
  2. [群組名稱] → 安全性群組的名稱,通常從應用程式名稱建立。 在群組名稱中包含 local-dev 這樣的字串也很有幫助,能夠指出群組的用途。
  3. [群組描述] → 群組用途的描述。
  4. 選取 [成員] 下方的 [未選取任何成員] 連結,為群組新增成員。
螢幕擷取畫面:顯示如何建立新 Microsoft Entra 群組。選取新增成員到此群組的連結位置會反白顯示。
在 [新增成員] 對話方塊進行下列設定:
  1. 使用搜尋方塊篩選清單中的使用者名稱清單。
  2. 為此應用程式選擇一或多個使用者進行本機開發。 當您選擇物件時,物件會移至對話框底部的 [選取的項目] 清單。
  3. 完成後,請選擇 [選取] 按鈕。
[新增成員] 對話方塊的螢幕擷取畫面,顯示如何選取要包含在群組中的開發人員帳戶。
返回 [新增群組] 頁面上,選取 [建立] 以建立群組。該群組將會建立,且您會返回 [所有群組] 頁面。 群組最多可能需 30 秒才會顯示,且礙於 Azure 入口網站中的快取,您可能必須重新整理頁面才能看見。 [新增群組] 頁面的螢幕擷取畫面,顯示如何選取 [建立] 按鈕完成流程。

注意

根據預設,建立 Microsoft Entra 群組僅限於目錄中的特定特殊權限角色。 如果無法建立群組,請連絡目錄的系統管理員。 如果無法將成員新增至現有的群組,請連絡群組擁有者或目錄系統管理員。 若要深入了解,請參閱管理 Microsoft Entra 群組和群組成員資格

2 - 將角色指派給 Microsoft Entra 群組

接著,請決定應用程式針對哪些資源需要哪些角色 (權限),並將這些角色指派給應用程式。 在此範例中,角色會指派給在步驟 1 中建立的 Microsoft Entra 群組。 群組可以在資源、資源群組或訂閱範圍內獲派角色。 此範例會顯示如何在資源群組範圍內指派角色,因為多數應用程式都會將所有 Azure 資源劃分在單一資源群組中。

指示 Screenshot
使用 Azure 入口網站頂端的搜尋方塊,搜尋資源群組的名稱,藉此找出應用程式的資源群組。 選取對話方塊中 資源群組 標題下方的資源群組名稱,瀏覽至您的資源群組。 螢幕擷取畫面:顯示如何使用 Azure 入口網站頂端的搜尋方塊,找出並瀏覽至您想指派角色 (權限) 的資源群組。
在資源群組分頁中,從左側功能表選取 存取控制 (IAM) 資源群組頁面的螢幕擷取畫面,顯示 [存取控制 (IAM)] 功能表項目的位置。
存取控制 (IAM) 分頁上:
  1. 選取 [角色指派] 索引標籤。
  2. 從頂端功能表選取 [+ 新增],然後從產生的下拉功能表中選取 [新增角色指派]
螢幕擷取畫面:顯示如何瀏覽至角色指派索引標籤,以及用以將角色指派新增至資源群組按鈕位置。
新增角色指派 分頁列出所有可指派至資源群組之角色的清單。
  1. 請善用搜尋方塊,將清單篩選為更易於管理的大小。 此範例顯示如何針對儲存體 Blob 角色進行篩選。
  2. 選取您要指派的角色。
選取 [下一步] 前往下一個畫面。
螢幕擷取畫面:顯示如何篩選並選取要新增至資源群組的角色指派。
下一個 新增角色指派 分頁能讓您指定要指派角色的使用者。
  1. 選取 [存取權指派對象為] 下的 [使用者、群組或服務主體]
  2. 選取 [成員] 下的 [+ 選取成員]
對話方塊會在 Azure 入口網站的右側開啟。
螢幕擷取畫面:顯示用來將角色指派給 Microsoft Entra 群組的選項按鈕,以及用來選取群組以指派角色的連結。
在 [選取成員] 對話方塊進行下列設定:
  1. [選取] 文字輸入框可用來篩選訂閱中的使用者及群組清單。 如有需要,請輸入您為應用程式所建立本機開發 Microsoft Entra 群組的前幾個字元。
  2. 選取與您的應用程式相關聯的本機開發 Microsoft Entra 群組。
選取對話方塊底部的 [選取] 來繼續。
螢幕擷取畫面:顯示如何在 [選取成員] 對話方塊中為應用程式篩選並選取 Microsoft Entra 群組。
Microsoft Entra 群組會在 [新增角色指派] 畫面上顯示為已選取。 選取 [檢閱 + 指派] 移至最終分頁,然後再次選取 [檢閱 + 指派] 完成此流程。 螢幕擷取畫面:顯示已完成的 [新增角色指派] 頁面,以及用來完成流程的 [檢閱 + 指派] 按鈕位置。

3 - 使用開發人員工具登入 Azure

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

  1. 瀏覽至 [工具]>[選項] 以開啟 [選項] 對話方塊。

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

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

  4. 選取 [選擇帳戶] 下方的下拉式功能表,然後選擇新增 Microsoft 帳戶。 視窗隨即開啟,提示您挑選帳戶。 輸入您要使用的 Azure 帳戶認證,然後選取確認。

    螢幕擷取畫面:顯示如何使用 Visual Studio 登入 Azure。

  5. 選取 [確定] 以關閉 [選項] 對話方塊。

4 - 在應用程式中實作 DefaultAzureCredential

DefaultAzureCredential 是向 Microsoft Entra 驗證的固定按順序機制序列。 每個驗證機制的類別都是衍生自 TokenCredential 類別,稱為認證。 在執行階段中,DefaultAzureCredential 會嘗試使用第一個認證進行驗證。 如果該認證無法取得存取權杖,則會嘗試序列中的下一個認證,依序進行,直到成功取得存取權杖為止。 因此,您的應用程式可以在相異環境中使用不同的認證,而不需要撰寫環境特定程式碼。

DefaultAzureCredential 尋找認證的順序和位置,可在 DefaultAzureCredential (英文) 中找到。

若要使用 DefaultAzureCredential,請新增 Azure.Identity,並選擇性將 Microsoft.Extensions.Azure 套件新增至您的應用程式:

在您選擇的終端機中,瀏覽至應用程式專案目錄,然後執行下列命令:

dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure

使用來自各種 Azure SDK 用戶端程式庫的特殊用戶端類別以存取 Azure 服務。 這些類別和您自訂的服務都應註冊,使其可在應用程式中透過相依性插入來存取。 在 Program.cs 中,完成下列步驟以註冊用戶端類別和 DefaultAzureCredential

  1. 透過 using 指示詞包含 Azure.IdentityMicrosoft.Extensions.Azure 命名空間。
  2. 使用對應的以 Add 為前置詞擴充方法,註冊 Azure 服務用戶端。
  3. 將的 DefaultAzureCredential 的執行個體傳遞至 UseCredential 方法。

例如:

using Microsoft.Extensions.Azure;
using Azure.Identity;

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

UseCredential 的替代方法是直接具現化 DefaultAzureCredential

using Azure.Identity;

builder.Services.AddSingleton<BlobServiceClient>(_ =>
    new BlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"),
        new DefaultAzureCredential()));

在本機開發工作站上執行上述程式碼時,便會在環境變數中尋找應用程式服務主體,或在本機安裝的開發工具 (例如 Visual Studio) 中尋找一組開發人員認證。 在本機開發期間,您可以使用任一方法以向 Azure 資源驗證應用程式。

部署至 Azure 時,這同一組程式碼也可向其他 Azure 資源驗證您的應用程式。 DefaultAzureCredential 可擷取環境設定與受控識別設定,以便自動向其他服務進行驗證。