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



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

中如下所示Micorosft.Identity.Web在Startup.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,当然所有这些敏感值都存储在Key Vault中。所以,我想找到一种方法:

services.AddMicrosoftIdentityWebApiAuthentication(new Configuration {
Domain   = KeyVaultClient.GetSecret("domain"),
Instance = KeyVaultClient.GetSecret("instance")
TenantId = KeyVaultClient.GetSecret("tenant")
ClientId = KeyVaultClient.GetSecret("client")
});

同时,我没有找到在KeyVault中创建这个section的方法所以我可以这样做

services.AddMicrosoftIdentityWebApiAuthentication(KeyVaultClient.GetSecret("azureadconfig"));

我如何存档这些选项之一,或者我如何避免依赖于app.设置,如果我有我所有的值在Key Vault

编辑注意

我有密钥库作为配置提供程序,但我不知道如何以节方式返回这些值,因为方法期望

您可以在Key Vault秘密名称中使用双破折号,并且。net将它们视为区段。secretname:Section--Itemname

首先,这些值都不是秘密值。所以它们不一定需要在Key Vault中。

但是,如果您希望它们在那里,则需要将Key Vault添加为配置提供程序。然后,密钥库的秘密将通过像appsettings.json中的设置一样的IConfiguration可用。

我写了一篇关于这个主题的文章(使用管理身份连接到密钥库):https://joonasw.net/view/aspnet-core-azure-keyvault-msi.

最新更新