如何在Azure App Service的ASP.NET Core应用中透明读取Key Vault机密作为配置
实现C#透明读取Azure Key Vault机密作为配置
步骤1:安装必要NuGet包
在项目中安装以下包,用于集成Azure Key Vault和配置系统:
Install-Package Azure.Extensions.AspNetCore.Configuration.Secrets Install-Package Azure.Identity
步骤2:修改Program.cs配置构建逻辑
在配置构建阶段添加Azure Key Vault作为配置源,这样配置系统会自动将Key Vault中的机密与本地配置合并,原有builder.Configuration.GetSection("AzureAd")代码无需任何修改。
代码示例:
var builder = WebApplication.CreateBuilder(args); // 引入Azure Key Vault配置源 builder.Configuration.AddAzureKeyVault( new Uri($"https://{builder.Configuration["KeyVaultName"]}.vault.azure.net/"), new DefaultAzureCredential() ); // 原有服务注册逻辑保持不变 builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAd")); // ...其他服务注册及中间件配置代码 var app = builder.Build(); // ...后续应用启动逻辑
步骤3:Key Vault机密命名规则
要让配置系统自动映射到AzureAd配置节的子项,Key Vault中的机密名称需遵循分层命名格式:用双短横线--替代配置路径中的冒号::
- 对应
AzureAd:TenantId的机密名称:AzureAd--TenantId - 对应
AzureAd:ClientId的机密名称:AzureAd--ClientId - 对应
AzureAd:ClientSecret的机密名称:AzureAd--ClientSecret
配置系统会自动识别这种命名,将机密值注入到AzureAd配置节的对应属性中,实现完全透明的读取。
步骤4:开发环境兼容(可选)
开发环境中你原有的Connected Services/Secrets配置方式可以保留,配置系统默认会优先使用本地配置(appsettings.json、用户机密),若本地无对应值才会从Key Vault读取。如果需要在开发环境测试Key Vault读取,只需确保你的开发身份(如Visual Studio、Azure CLI登录账号)拥有Key Vault的访问权限,DefaultAzureCredential会自动适配开发环境身份。
内容的提问来源于stack exchange,提问作者g.pickardou
相关产品推荐
相关产品推荐

