微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure Key Vault 中的应用设置配置部分

如何解决Azure Key Vault 中的应用设置配置部分

我正在使用新库 Micorosft.Identity.Web 在 Net5 API 上实施 AAD 身份验证该库公开了一种方法,该方法仅接受 IConfiguration 的部分,在 app.settings 中如下所示

Startup.cs 上来自 Micorosft.Identity.Web 的身份验证方法

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 中创建此“部分”的方法,因此我可以这样做

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

如果我的所有值都在 Key Vault 上,我如何存档这些选项之一,或者如何避免取决于 app.settings

编辑注释

我有 Key Vault 作为配置提供程序,但我不知道如何以 Section 方式返回这些值,因为方法是期望的

解决方法

首先,这些值都不是秘密。因此,它们不一定需要位于 Key Vault 中。

但是,如果您无论如何都希望它们存在,则需要将 Key Vault 添加为配置提供程序。 然后 Key Vault 机密将通过 IConfiguration 可用,就像 appsettings.json 中的设置一样。

我写了一篇关于该主题的文章(也使用托管标识连接到 Key Vault):https://joonasw.net/view/aspnet-core-azure-keyvault-msi

,

您可以在 Key Vault 机密名称中使用双破折号,.NET 会将它们视为部分。机密名称:Section--Itemname

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。