Appearance
如何在 .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.Azure2. 使用 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。
你可能还需要
暂无推荐