如何在ASP.NET MVC中将AzureADB2C对象存为Key Vault机密并访问
将ASP.NET MVC的AzureADB2C配置迁移到Azure Key Vault并保持现有代码兼容
1. 在Azure Key Vault中创建对应机密
AzureADB2C的配置是结构化对象,需将每个配置项以层级命名的方式存入Key Vault机密,命名格式为AzureADB2C:{配置项名称},例如:
- 机密名称:
AzureADB2C:Instance,值为你的ADB2C实例地址(如https://yourtenant.b2clogin.com/) - 机密名称:
AzureADB2C:ClientId,值为应用注册的Client ID - 机密名称:
AzureADB2C:Domain,值为你的租户域名 - 机密名称:
AzureADB2C:SignUpSignInPolicyId,值为你的登录策略ID - 原appsettings中
AzureADB2C节点下的其余配置项,均按此格式创建机密
2. 为应用程序分配Key Vault访问权限
场景1:部署在Azure App Service
- 为你的App Service启用系统托管身份
- 在Azure Key Vault的「访问控制(IAM)」中添加角色分配:
- 角色选择「Key Vault Secrets User」
- 成员选择你的App Service的系统托管身份
场景2:本地开发
- 确保本地开发环境已通过Azure CLI、Visual Studio或Azure PowerShell登录Azure账户
- 给你的登录账户分配「Key Vault Secrets User」角色到目标Key Vault
3. 修改Program.cs加载Key Vault机密
在构建Configuration时添加Azure Key Vault作为配置源,系统会自动将Key Vault中的机密映射到AzureADB2C配置节,无需修改原有的认证代码。
示例代码:
var builder = WebApplication.CreateBuilder(args); // 添加Azure Key Vault作为配置源 builder.Configuration.AddAzureKeyVault( new Uri("https://your-keyvault-name.vault.azure.net/"), new DefaultAzureCredential() ); // 原有的认证代码保持不变 builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureADB2C")); // ... 其他配置代码 var app = builder.Build(); // ... 后续中间件配置
DefaultAzureCredential会自动适配不同环境的认证方式:本地开发时用你的登录账户,Azure部署时用托管身份,无需额外配置。
4. 验证配置
- 移除或注释掉appsettings.json中的
AzureADB2C节点 - 运行应用,尝试通过ADB2C登录,确认认证流程正常执行
内容的提问来源于stack exchange,提问作者StanSm789
相关产品推荐
相关产品推荐

