【发布时间】:2021-03-04 14:43:20
【问题描述】:
我正在使用新库 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 的方式返回这些值,正如方法所期望的那样
【问题讨论】:
-
只是为了确认一下,如果您在 Azure 应用服务中运行,请使用:docs.microsoft.com/en-us/azure/app-service/…
-
问题是没有从 Key Vault 获取值,问题是 Key Vault 将该值作为 IConfiguration 的“部分”获取
-
那没有回答我的问题。如果您在应用服务中运行,所有应用设置都会加载到环境变量中以便于使用 - 直接从 ENV 或通过 IConfiguration 等
-
我确实有一个 azure 应用程序服务,并且我确实将 Key Vault 作为配置提供程序提供了所有这些变量,问题是没有获取这些值,我可以轻松地单独访问所有这些变量,但该方法期望来自配置提供程序的部分,所以我不知道是从这个单独的值形成这个部分。
-
IIRC 您可以在您的秘密名称中使用双破折号,.NET 会将它们视为部分。密码:
Section--Itemname
标签: c# .net azure azure-keyvault microsoft-identity-web