在本機開發期間,應用程式必須向 Azure 進行驗證,才能存取各種 Azure 服務。 本機驗證的兩個常見方法是 使用服務主體 或使用開發人員帳戶。 本文說明如何使用開發人員帳戶。 在以下各節,您將了解:
- 如何使用Microsoft Entra 群組有效率地管理多個開發人員帳戶的許可權
- 如何將角色指派給開發人員帳戶以設定許可權範圍
- 如何登入支援的本機開發環境工具
- 如何從您的應用程式程式代碼使用開發人員帳戶進行驗證
若要讓應用程式在使用開發人員的 Azure 認證進行本機開發期間向 Azure 進行驗證,開發人員必須從下列其中一個開發人員工具登入 Azure:
- Azure 命令列界面 (CLI)
- Azure 開發者命令列界面
- Azure PowerShell
- Visual Studio
Azure 身分識別連結庫可以偵測開發人員是否從其中一個工具登入。 接著,程式庫可以透過工具取得 Microsoft Entra 存取令牌,以作為已登入使用者的身分驗證應用程式至 Azure。
此方法會利用開發人員的現有 Azure 帳戶來簡化驗證程式。 不過,開發人員的帳戶可能比應用程式所需的許可權還多,因此超過應用程式在生產環境中執行的許可權。 或者,您也可以 建立應用程式服務主體,以在本機開發期間使用,其範圍可限定為只有應用程式所需的存取權。
建立 Microsoft Entra 群組以供本機開發使用
建立Microsoft Entra 群組,以封裝應用程式在本機開發中所需的角色(許可權),而不是將角色指派給個別服務主體物件。 此方法提供下列優點:
- 每個開發人員都有在群組層級指派的相同角色。
- 如果應用程式需要新的角色,則只需要將它新增至應用程式的群組。
- 如果新的開發人員加入小組,則會為開發人員建立新的應用程式服務主體,並新增至群組,確保開發人員有適當的許可權可處理應用程式。
流覽至 Azure 入口網站中 Microsoft Entra ID 概觀頁面。
從左側功能表中選取 [所有群組]。
在 [群組] 頁面上,選取 [新增群組]。
在 新增群組 頁面上,填寫下列表單欄位:
- 群組類型:選取 [安全性]。
- 群組名:輸入包含應用程式或環境名稱參考的群組名稱。
- 群組描述:輸入說明群組用途的描述。
選擇 [未選取成員] 連結於 [成員 ] 下以將成員新增至群組。
在開啟的飛出視窗中,搜尋您稍早建立的服務主體,並從篩選的結果中選取它。 在面板底部選擇 [] 按鈕 [] 以確認您的選擇。
選取 建立 以在 新增群組 頁面底部建立群組,並返回 所有群組 頁面。 如果您沒有看到列出的新群組,請稍候一下並重新整理頁面。
將角色指派給群組
接下來,決定您的應用程式需要哪些資源的角色(許可權),並將這些角色指派給您所建立的 Microsoft Entra 群組。 群組可以在資源、資源群組或訂閱範圍指派角色。 此範例示範如何在資源群組範圍中指派角色,因為大部分的應用程式都會將其所有 Azure 資源群組組成單一資源群組。
在 Azure 入口網站中,流覽至包含您應用程式的資源群組 概觀 頁面。
從左側導覽選擇 存取控制 (IAM)。
在 [訪問控制 (IAM)] 頁面上,選取 [+ 加],然後從下拉功能表中選擇 [指派角色]。 [新增角色指派] 頁面提供數個索引標籤來設定和指派角色。
在「角色」分頁中,使用搜尋方塊找出您想指派的角色。 選擇角色,然後選擇 下一步。
在 [成員] 頁籤上:
- 針對 指派存取權給 值,請選取 使用者、群組或服務主體 。
- 針對 [成員] 的值,選擇 [+ 選取成員] 以開啟 [選取成員] 的飛出視窗面板。
- 搜尋您稍早建立的 Microsoft Entra 群組,並從篩選的結果中選取它。 選擇 ,然後選取,以選取群組並關閉浮動面板。
- 請在 成員 索引標籤的底部選取 檢閱 + 指派。
在 檢閱 + 指派 索引標籤上,選取頁面底部的 檢閱 + 指派。
使用開發人員工具登入 Azure
接下來,使用數個開發人員工具之一登入 Azure,以在開發環境中執行驗證。 您驗證的帳戶也應該存在於您稍早建立和設定的 Microsoft Entra 群組中。
使用 Visual Studio 2017 或更新版本的開發人員可以透過 IDE 使用其開發人員帳戶進行驗證。 使用 DefaultAzureCredential 或 VisualStudioCredential 的應用程式可以在本機執行時探索及使用此帳戶來驗證應用程式要求。 當您直接從 Visual Studio 將應用程式發佈至 Azure 時,也會使用此帳戶。
這很重要
您必須 安裝 Azure 開發 工作負載,才能啟用 Azure 驗證、開發和部署的 Visual Studio 工具。
在 Visual Studio 內,流覽至 [工具]>[選項] 以開啟 [選項] 對話框。
在頂端的 [搜尋選項] 方塊中,輸入 Azure 來篩選可用的選項。
在 [Azure 服務驗證] 下,選擇 [帳戶選取]。
請從選擇帳戶下拉式功能表中選擇,然後新增一個Microsoft帳戶。
在開啟的視窗中,輸入所需 Azure 帳戶的認證,然後確認您的輸入。
選取確定 以關閉選項對話框。
從您的應用程式向 Azure 服務進行驗證
Azure 身分識別程式庫 提供各種 認證的實作,以支援不同的情境和 Microsoft Entra 驗證流程。 後續步驟示範如何在本機使用用戶帳戶時使用 DefaultAzureCredential。
實作程序代碼
DefaultAzureCredential 是一種有明確設計的、經排序的機制序列,用於向 Microsoft Entra ID 進行驗證。 每個驗證機制都是衍生自 TokenCredential 類別的類別,稱為 認證。 在運行時間,DefaultAzureCredential
嘗試使用第一個認證進行驗證。 如果該認證無法取得存取權杖,則會嘗試序列中的下一個認證,以此類推,直到成功取得存取權杖為止。 如此一來,您的應用程式就可以在不同的環境中使用不同的認證,而不需要撰寫環境特定的程序代碼。
若要使用 DefaultAzureCredential
,請將 Azure.Identity,並選擇性地將 Microsoft.Extensions.Azure 套件新增至您的應用程式:
在您選擇的終端機中,瀏覽至應用程式項目目錄,然後執行下列命令:
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Azure 服務是使用來自各種 Azure SDK 用戶端連結庫的特殊客戶端類別來存取。 這些類別和您自己的自定義服務應該註冊,以便透過整個應用程式的相依性插入來存取它們。 在 Program.cs
中,完成下列步驟來註冊客戶端類別和 DefaultAzureCredential
:
- 透過
Azure.Identity
指令來包含Microsoft.Extensions.Azure
和using
命名空間。 - 使用對應的
Add
前置擴充方法註冊 Azure 服務用戶端。 - 將
DefaultAzureCredential
實例傳遞至UseCredential
方法。
builder.Services.AddAzureClients(clientBuilder =>
{
clientBuilder.AddBlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"));
clientBuilder.UseCredential(new DefaultAzureCredential());
});
UseCredential
方法的替代方法是直接將認證提供給服務用戶端:
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));