You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Net6.0控制台程序:如何迁移Microsoft.Extensions.Configuration.AzureKeyVault至MSAL

迁移Net6.0控制台程序至MSAL并替换KeyVault配置代码

步骤1:安装所需NuGet包

移除旧包后,需安装以下适配Azure SDK v2的新包:

  • Azure.Security.KeyVault.Secrets:KeyVault秘密操作核心包
  • Microsoft.Extensions.Azure:Azure服务依赖注入扩展
  • Microsoft.Extensions.Configuration.AzureKeyVault:新版KeyVault配置扩展(注意此为Azure SDK v2版本,与旧包同名但实现不同)
  • Azure.Identity:基于MSAL的身份凭据获取库

可通过命令行安装:

Install-Package Azure.Security.KeyVault.Secrets
Install-Package Microsoft.Extensions.Azure
Install-Package Microsoft.Extensions.Configuration.AzureKeyVault
Install-Package Azure.Identity

步骤2:替换原有代码块

原有代码中的旧API全部替换为Azure SDK v2的规范实现,以下是完整替换后的代码:

// 从基础配置中读取MyJobOption
var jobOption = Configuration.GetSection("MyJobOption").Get<MyJobOption>();

// 使用DefaultAzureCredential(基于MSAL)获取KeyVault访问凭据
// 该类会自动适配多种验证场景:环境变量、托管标识、Azure CLI登录等
var credential = new DefaultAzureCredential();

// 用新版SecretClient替代旧的KeyVaultClient
var secretClient = new SecretClient(new Uri(jobOption.KeyVaultUrl), credential);

// 调用新版AddAzureKeyVault扩展方法完成配置加载
Configuration = configBuilder
    .AddAzureKeyVault(secretClient, new AzureKeyVaultConfigurationOptions
    {
        Manager = new DefaultKeyVaultSecretManager()
    })
    .Build();

services.AddSingleton(Configuration);

关键变化说明

  • 替换AzureServiceTokenProvider:改用DefaultAzureCredential,它是Azure Identity库的核心类,基于MSAL实现,无需手动处理令牌回调,自动适配多种身份验证场景。
  • 替换KeyVaultClient:改用SecretClient,这是Azure SDK v2官方推荐的KeyVault秘密操作客户端,API设计更简洁规范。
  • 新版AddAzureKeyVault:不再依赖旧版KeyVaultClient,直接传入SecretClient即可,配置选项也简化为AzureKeyVaultConfigurationOptions。

额外注意事项

  • 需确保应用程序拥有KeyVault的访问权限,可通过Azure RBAC分配Key Vault Secrets User角色。
  • 若需限制DefaultAzureCredential的验证方式,可通过DefaultAzureCredentialOptions构造参数调整优先级或禁用特定验证渠道。

内容的提问来源于stack exchange,提问作者samsu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 20:46:07