C# Azure密钥库中的应用程序设置配置部分

C# Azure密钥库中的应用程序设置配置部分,c#,.net,azure,azure-keyvault,microsoft-identity-web,C#,.net,Azure,Azure Keyvault,Microsoft Identity Web,我正在使用新的库Micorosft.Identity.Web在Net5 API上实现AAD身份验证。该库公开了一个方法,该方法只接受IConfiguration,其部分在app.settings 启动时的身份验证方法。cs public void ConfigureServices(IServiceCollection services) { ... services.AddMicrosoftIdentityWebApiAuthentication(Configuration,

我正在使用新的库
Micorosft.Identity.Web
在Net5 API上实现AAD身份验证。该库公开了一个方法,该方法只接受
IConfiguration
,其部分在
app.settings

启动时的身份验证方法。cs

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddMicrosoftIdentityWebApiAuthentication(Configuration, "AzureAd");
    ...
}
app.settings.json

"AzureAd": {
    "Domain": "contoso.com",
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "00000000-0000-0000-0000-000000000000",
    "ClientId": "00000000-0000-0000-0000-000000000000"
 },
现在,问题是,我正在使用Azure部署此API,当然所有这些敏感值都存储在密钥库中。因此,我想找到一种方法:

services.AddMicrosoftIdentityWebApiAuthentication(new Configuration {
    Domain   = KeyVaultClient.GetSecret("domain"),
    Instance = KeyVaultClient.GetSecret("instance")
    TenantId = KeyVaultClient.GetSecret("tenant")
    ClientId = KeyVaultClient.GetSecret("client")
});
同时,我找不到在KeyVault中创建此“部分”的方法,所以我可以这样做

services.AddMicrosoftIdentityWebApiAuthentication(KeyVaultClient.GetSecret("azureadconfig"));
如何存档其中一个选项,或者如果密钥库中有我的所有值,如何避免依赖app.settings

编辑注释


我有密钥库作为配置提供程序,但我不知道如何以分段方式返回这些值,因为这些方法期望首先,这些值都不是秘密。所以他们不一定要在钥匙库里

但是,如果仍希望它们存在,则需要将密钥库添加为配置提供程序。 然后,将通过IConfiguration(如appsettings.json中的设置)提供关键Vault机密


我写了一篇关于这个主题的文章(也使用托管身份连接到密钥库):。

首先,这些值都不是秘密。所以他们不一定要在钥匙库里

但是,如果仍希望它们存在,则需要将密钥库添加为配置提供程序。 然后,将通过IConfiguration(如appsettings.json中的设置)提供关键Vault机密


我写了一篇关于这个主题的文章(也使用托管标识连接到密钥库):。

您可以在密钥库秘密名称中使用双破折号,而.NET会将它们视为部分。secretname:
Section--Itemname

您可以在密钥保管库秘密名称中使用双破折号,.NET将把它们视为部分。secretname:
Section--Itemname

只是确认一下,如果您在Azure应用程序服务中运行,请使用以下方法:问题不是从密钥库获取值,问题是密钥库将该值作为IConfiguration的“Section”获取,而IConfiguration没有回答我的问题。如果您在应用程序服务中运行,所有应用程序设置都会加载到env VAR中以方便使用-直接从env或通过IConfiguration etcI。我有一个azure应用程序服务,并且作为配置提供程序,Key Vault提供了所有这些变量,问题是无法获取值,我可以很容易地分别访问所有这些值,但是该方法需要配置提供程序提供的节,所以我不知道的是从这些值中形成此节。IIRC您可以在机密名称中使用双破折号,.NET将它们视为节。secretname:
Section--Itemname
只是确认一下,如果您在Azure应用程序服务中运行,请使用以下命令:问题不是从密钥库获取值,问题是密钥库将该值作为IConfiguration的“Section”获取,而IConfiguration没有回答我的问题。如果您在应用程序服务中运行,所有应用程序设置都会加载到env VAR中以方便使用-直接从env或通过IConfiguration etcI。我有一个azure应用程序服务,并且作为配置提供程序,Key Vault提供了所有这些变量,问题是无法获取值,我可以很容易地分别访问所有这些值,但是该方法需要配置提供程序提供的节,所以我不知道的是从这些值中形成此节。IIRC您可以在机密名称中使用双破折号,.NET将它们视为节。secretname:
Section--Itemname
我有密钥库作为配置提供程序,但函数需要一个“Section”,密钥库如何返回此部分ASP.NET Core中的所有设置实际上都是单个设置。如果您有两个环境变量“Section_usetting1”和“Section_usetting2”,它的工作原理与JSON
{“Section”:{“Setting1”:“a”,“Setting2”:“b”}
相同。JSON配置提供程序只是将对象解释为具有相同的键前缀。在密钥库中,您可以将设置添加为
部分--SettingName
。我将密钥库作为配置提供程序,但函数需要一个“部分”,密钥库如何返回此部分ASP.NET Core中的所有设置实际上都是单个设置。如果您有两个环境变量“Section_usetting1”和“Section_usetting2”,它的工作原理与JSON
{“Section”:{“Setting1”:“a”,“Setting2”:“b”}
相同。JSON配置提供程序只是将对象解释为具有相同的键前缀。在密钥库中,您可以将设置添加为
部分--SettingName