Skip to content

如何在 .NET 项目中高效实现 Azure 身份验证

解决 Azure 资源访问时的凭据管理痛点:通过 Azure.Identity SDK 实现一套从本地开发到生产环境无缝切换的身份验证机制,无需在代码中硬编码密钥。

为什么需要这个技能

在开发 Azure 云应用时,管理凭据(如 Client Secret 或证书)是一个安全挑战。如果将密钥写入配置文件并提交到 Git,会导致严重的安全漏洞;而为开发、测试、生产环境分别编写不同的认证逻辑,则会增加代码复杂度。

Azure.Identity 库提供了一套标准化的凭据链机制,允许应用程序根据当前运行环境(如本地 Visual Studio、Azure 虚拟机、AKS 等)自动选择最合适的认证方式,实现“一次编写,到处运行”的安全访问。

适用场景

  • 多环境部署:同一套代码需要在本地开发环境(使用 CLI 登录)和生产环境(使用托管身份)之间切换。
  • 无密钥访问:在 Azure 资源(如 App Service 或 VM)中通过 Managed Identity 访问 Key Vault 或 Storage。
  • 企业级集成:需要通过服务主体(Service Principal)使用证书或密钥进行身份验证。
  • ASP.NET Core 集成:通过依赖注入(DI)统一管理 Azure 客户端的生命周期和凭据。

核心工作流

1. 安装核心包

bash
dotnet add package Azure.Identity
# 如果需要集成到 ASP.NET Core DI 容器
dotnet add package Microsoft.Extensions.Azure

2. 使用 DefaultAzureCredential(推荐)

这是最核心的实践。它会按顺序尝试多种认证方法(环境变量 托管身份 IDE 凭据 Azure CLI),直到成功为止。

csharp
using Azure.Identity;
using Azure.Storage.Blobs;

// 自动适配当前环境的凭据
var credential = new DefaultAzureCredential();
var blobClient = new BlobServiceClient(
    new Uri("https://myaccount.blob.core.windows.net"), 
    credential);

3. 在 ASP.NET Core 中配置

利用 AddAzureClients 实现统一的凭据管理:

csharp
builder.Services.AddAzureClients(clientBuilder =>
{
    clientBuilder.AddBlobServiceClient(new Uri("https://myaccount.blob.core.windows.net"));
    clientBuilder.AddSecretClient(new Uri("https://myvault.vault.azure.net"));
    
    // 全局使用 DefaultAzureCredential
    clientBuilder.UseCredential(new DefaultAzureCredential());
});

4. 针对生产环境的精准控制

在生产环境中,为了性能和确定性,可以直接指定托管身份(Managed Identity):

csharp
// 使用用户分配的托管身份
var credential = new ManagedIdentityCredential(
    ManagedIdentityId.FromUserAssignedClientId("<client-id>"));

下载和安装

下载 azure-identity-dotnet 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐