2

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

Micorosft.Identity.WebStartup.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 中创建这个“部分”的方法,所以我可以这样做

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

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

编辑说明

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

4

2 回答 2

5

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

于 2021-03-04T15:48:58.553 回答
2

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

但是,如果您仍然想要它们,则需要将 Key Vault 添加为配置提供程序。然后 Key Vault 机密将通过 IConfiguration 提供,就像 appsettings.json 中的设置一样。

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

于 2021-03-04T14:50:54.037 回答