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

Afe*_*ter 4 .net c# azure azure-keyvault microsoft-identity-web

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

Micorosft.Identity.WebStartup.cs 上的身份验证方法

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddMicrosoftIdentityWebApiAuthentication(Configuration, "AzureAd");
    ...
}
Run Code Online (Sandbox Code Playgroud)

应用程序设置.json

"AzureAd": {
    "Domain": "contoso.com",
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "00000000-0000-0000-0000-000000000000",
    "ClientId": "00000000-0000-0000-0000-000000000000"
 },
Run Code Online (Sandbox Code Playgroud)

现在的问题是,我正在使用 Azure 来部署此 API,当然所有这些敏感值都存储在 Key Vault 中。所以,我想找到一种方法来做到这一点:

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

同时,我没有找到在 KeyVault 创建这个“部分”的方法,所以我能够做到这一点

services.AddMicrosoftIdentityWebApiAuthentication(KeyVaultClient.GetSecret("azureadconfig"));
Run Code Online (Sandbox Code Playgroud)

如何存档这些选项之一,或者如果我将所有值都保存在 Key Vault 上,如何避免依赖 app.settings

编辑注释

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

sil*_*ent 13

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

  • Azure 开发人员需要了解这一点,但任何地方都没有提及这一点。 (2认同)