Azure functions Azure功能配置密钥Vault提供程序不工作

Azure functions Azure功能配置密钥Vault提供程序不工作,azure-functions,azure-keyvault,asp-net-config-builders,Azure Functions,Azure Keyvault,Asp Net Config Builders,我想使用Azure密钥库提供程序填充我的应用程序的配置。与“我的代码”结合使用,如下所示: local.settings.json { “IsEncrypted”:错误, “价值观”:{ “KeyVaultUri”:https://meh.vault.azure.net/", “测试:超级机密”:“密钥库条目的机密名称” } } Startup.cs [程序集:函数启动(类型(启动))] 名称空间myNamespace { 公共类启动:函数启动 { 公共覆盖无效配置(IFunctionsHos

我想使用Azure密钥库提供程序填充我的应用程序的配置。与“我的代码”结合使用,如下所示:

local.settings.json

{
“IsEncrypted”:错误,
“价值观”:{
“KeyVaultUri”:https://meh.vault.azure.net/",
“测试:超级机密”:“密钥库条目的机密名称”
}
}
Startup.cs

[程序集:函数启动(类型(启动))]
名称空间myNamespace
{
公共类启动:函数启动
{
公共覆盖无效配置(IFunctionsHostBuilder)
{
builder.Services.AddOptions()
.Configure((cfgSection,cfg)=>cfg.GetSection(“测试”).Bind(cfgSection));
}
公共覆盖无效配置AppConfiguration(IFunctionsConfigurationBuilder)
{
var builconfig=builder.ConfigurationBuilder.Build();
var kvEndpoint=builconfig[“KeyVaultUri”];
var cred=new ChainedTokenCredential(new managedEntityCredential(),new AzureCliCredential());
var opt=new AzureKeyVaultConfigurationOptions{ReloadInterval=TimeSpan.FromHours(24)};
builder.ConfigurationBuilder
.AddAzureKeyVault(新Uri(kvEndpoint)、cred、opt)
.SetBasePath(环境.CurrentDirectory)
.AddJsonFile(“local.settings.json”,可选:true)
.AddenEnvironmentVariables()
.Build();
}
}
}
函数.cs

名称空间myNamespace
{
公开课
{
私有只读IOPS;
公共秒(IOPS)=>\u s=s;
[功能名称(名称(秒))]
公共异步任务运行([HttpTrigger(AuthorizationLevel.Function,“get”,Route=“sec”)]HttpRequest请求,ILogger日志)
{
日志信息(_.Value.SuperSecret);
返回新的OkObjectResult(true);
}
}
}
现在当我调用

iwr http://localhost:7071/api/sec
将记录的是密钥保管库条目的机密名称的文字值
机密名称
。不是密钥库中的秘密值

这绝对不是访问策略的问题,因为之前我使用相同的用户主体从同一个vault手动查询机密


我错过了什么?非常感谢您的帮助。

我找到了一个可行的解决方案。在这里发布,这样其他人可能会受益

local.settings.json:此处不存在机密配置值

{
“IsEncrypted”:错误,
“价值观”:{
“KeyVaultUri”:https://meh.vault.azure.net/",
},
“设置”:{
“IsProd”:错误
}
}
AppSettings.cs

名称空间myNamespace
{
公共类应用程序设置
{
公共bool IsProd{get;set;}
公共字符串GraphCredential{get;set;}=string.Empty;
}
}
然后在密钥库本身中,使用名称
设置--GraphCredential
(两个破折号!)

名称空间myNamespace
{
公共类启动:函数启动
{
公共覆盖无效配置(IFunctionsHostBuilder)
{
builder.Services.AddOptions()
.Configure((cfgSection,cfg)=>cfg.GetSection(“设置”).Bind(cfgSection));
}
公共覆盖无效配置AppConfiguration(IFunctionsConfigurationBuilder)
{
var builconfig=builder.ConfigurationBuilder.Build();
var kvEndpoint=builconfig[“KeyVaultUri”];
var cred=new ChainedTokenCredential(new managedEntityCredential(),new AzureCliCredential());
var opt=new AzureKeyVaultConfigurationOptions{ReloadInterval=TimeSpan.FromHours(24)};
builder.ConfigurationBuilder
.AddAzureKeyVault(新Uri(kvEndpoint)、cred、opt)
.SetBasePath(环境.CurrentDirectory)
.AddJsonFile(“local.settings.json”,可选:true)
.AddenEnvironmentVariables()
.Build();
}
}
}

FYI,部署到Azure时,我注意到分配给功能应用程序的vault访问策略现在还需要机密列表权限才能获取。否则主机不会启动