使用開發人員帳戶,在本機開發期間向 Azure 服務驗證 .NET 應用程式
建立雲端應用程式時,開發人員必須在本機工作站上偵錯及測試應用程式。 當應用程式在本機開發期間於開發人員的工作站上執行時,仍必須向應用程式使用的任何 Azure 服務進行驗證。 本文涵蓋如何使用開發人員的 Azure 認證,在本機開發期間向 Azure 驗證應用程式。
若要讓應用程式在使用開發人員 Azure 認證進行本機開發期間向 Azure 進行驗證,開發人員必須從 VS Code Azure Tools 延伸模組、Azure CLI 或 Azure PowerShell 登入 Azure。 Azure SDK for .NET 能夠偵測開發人員是否從其中一個工具登入,然後從認證快取獲得必要的認證,以透過登入使用者的身分向 Azure 驗證應用程式。
這種方法對開發小組而言最容易設定,因為使用的是開發人員現有 Azure 帳戶。 不過,開發人員帳戶擁有的權限可能比應用程式需要的還多,因此超出應用程式在實際執行環境中執行時的權限。 您可以改為建立在本機開發期間使用的應用程式服務主體,設定其權限範圍與應用程式需要的存取權相符。
1 - 建立 Azure AD 群組以進行本機開發
由於應用程式工作幾乎都需要多名開發人員,因此建議您先建立 Azure AD 群組,以封裝應用程式在本機開發中需要的角色 (權限)。 這具有以下優點。
- 由於角色是在群組層級指派,因此指派給每位開發人員的角色都能保證相同。
- 如果應用程式需要新角色,只要在應用程式的 Azure AD 群組新增即可。
- 如果新的開發人員加入小組,他們只需要加入正確的 Azure AD 群組,就能取得正確的權限來處理應用程式。
如果您的開發小組已經有 Azure AD 群組,您可以使用該群組。 否則,請完成下列步驟以建立 Azure AD 群組。
2 - 將角色指派給 Azure AD 群組
接著,您必須決定應用程式針對哪些資源需要哪些角色 (權限),並將這些角色指派給應用程式。 在此範例中,角色會指派給步驟 1 建立的 Azure Active Directory 群組。 角色可在資源、資源群組或訂閱範圍內獲派其他角色。 此範例顯示如何在資源群組範圍內指派角色,因為多數應用程式都會將所有 Azure 資源劃分在單一資源群組中。
3 - 使用 .NET 工具登入 Azure
接下來,您需要使用其中一個 .NET 工具選項登入 Azure。 您登入的帳戶也應該存在於您稍早建立和設定的 Azure Active Directory 群組中。
在 Visual Studio 的頂端功能表,瀏覽到 [工具]>[選項],以開啟選項對話方塊。 在左上方的搜尋列中,鍵入 Azure 來篩選選項。 在 [Azure 服務驗證] 下方,選擇 [帳戶選取]。
選取 [選擇帳戶] 下方的下拉式功能表,然後選擇新增 Microsoft 帳戶。 視窗隨即開啟,提示您挑選帳戶。 輸入您要使用的 Azure 帳戶認證,然後選取確認。
4 - 在應用程式中實作 DefaultAzureCredential
DefaultAzureCredential
支援多種驗證方法,並會決定要在執行階段使用的驗證方法。 因此,您的應用程式可在相異的環境中使用不同的驗證方法,無須實作環境特定程式碼。
DefaultAzureCredential
尋找認證的順序和位置,可在 DefaultAzureCredential中找到。
為實作 DefaultAzureCredential
,請先將 Azure.Identity
與選擇性的 Microsoft.Extensions.Azure
套件新增至您的應用程式。 您可透過命令列或 NuGet 套件管理員執行此動作。
在應用程式專案目錄中開啟您想要的終端環境,然後輸入下列命令。
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Azure 服務通常使用 SDK 的對應用戶端類別來存取。 這些類別和您自訂的服務都應在 Program.cs
檔案中註冊,使其可在應用程式中透過相依性插入來存取。 請依照下列步驟,在 Program.cs
內正確設定您的服務和 DefaultAzureCredential
。
Azure.Identity
使用指示詞包含using
和Microsoft.Extensions.Azure
命名空間。- 用相關的協助程式方法註冊 Azure 服務。
- 將
DefaultAzureCredential
物件的執行個體傳遞至UseCredential
方法。
下列程式碼區段示範其中一種範例。
using Microsoft.Extensions.Azure;
using Azure.Identity;
// Inside of Program.cs
builder.Services.AddAzureClients(x =>
{
x.AddBlobServiceClient(new Uri("https://<account-name>.blob.core.windows.net"));
x.UseCredential(new DefaultAzureCredential());
});
或者,您也可以更直接地在服務中使用 DefaultAzureCredential
,而不求助於其他 Azure 註冊方法,如下所示。
using Azure.Identity;
// Inside of Program.cs
builder.Services.AddSingleton<BlobServiceClient>(x =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
上述程式碼在本機開發期間於本機工作站上執行時,會尋找環境變數中的應用程式服務主體,或在 Visual Studio、VS Code、Azure CLI 或 Azure PowerShell 中尋找一組開發人員認證;任意者皆可於本機開發期間用來向 Azure 資源驗證應用程式。
部署至 Azure 時,這同一組程式碼也可向其他 Azure 資源驗證您的應用程式。 DefaultAzureCredential
可擷取環境設定與受控識別設定,以便自動向其他服務進行驗證。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應