错误(Azure Key Vault)配置为仅供 Azure Active Directory 用户使用
Error (Azure Key Vault) is configured for use by Azure Active Directory users only
完整错误:
Microsoft.Extensions.Configuration.AzureAppConfiguration.KeyVaultReferenceException:SharedTokenCacheCredential 身份验证失败:AADSTS9002332:应用程序 'cfa8b339-82a2-471a-a3c9-0fc0be7a4093'(Azure Key Vault) 配置为仅供 Azure Active Directory 用户使用。请不要使用 /consumers 端点来处理此请求。
跟踪 ID:a4b9a7c9-8eb4-48ff-8871-8a63d69b1400
(Azure Key Vault) 配置为仅供 Azure Active Directory 用户使用。请不要使用 /consumers 端点来处理此请求。
我正在浏览此 Microsoft 文档页面上的示例:
https://docs.microsoft.com/en-us/azure/azure-app-configuration/use-key-vault-references-dotnet-core?tabs=powershell%2Ccore3x
构建时没有错误,但是当我在本地主机上启动网站时,出现上述错误。
这是 Program.cs 文件中的代码:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog()
.ConfigureWebHostDefaults(webBuilder =>
webBuilder.ConfigureAppConfiguration((hostingContext, config) =>
{
var settings = config.Build();
config.AddAzureAppConfiguration(options =>
{
options.Connect(settings["ConnectionStrings:AppConfig"])
.ConfigureKeyVault(kv =>
{
kv.SetCredential(new DefaultAzureCredential());
});
});
})
.UseStartup<Startup>());
// See: https://github.com/MicrosoftDocs/azure-docs/issues/71592
谁能告诉我接下来要尝试什么?
如果要访问Azure Key Vault,请参考以下步骤
- 创建服务主体
az ad sp create-for-rbac -n "http://mySP" --sdk-auth
- 在 azure keyvault 中设置访问策略
az keyvault set-policy -n <your-unique-keyvault-name> --spn <clientId-of-your-service-principal> --secret-permissions delete get list set --key-permissions create decrypt delete encrypt get list unwrapKey wrapKey --secret-permissions backup delete get list purge recover restore set
- 代码
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
webBuilder.ConfigureAppConfiguration((hostingContext, config) =>
{
var settings = config.Build();
config.AddAzureAppConfiguration(options =>
{
options.Connect(settings["ConnectionStrings:AppConfig"])
.ConfigureKeyVault(kv =>
{
var cert = new ClientSecretCredential("<tenant id>", "client id", "client secret");
kv.SetCredential(cert);
});
});
})
.UseStartup<Startup>());
此外,如果您运行使用VS 2019的应用程序,您可以使用扩展Azure Service Authentication
。但是需要使用租户中的一个工作账号登录,并为key vault中的账号配置权限访问策略。详情请参考here
完整错误: Microsoft.Extensions.Configuration.AzureAppConfiguration.KeyVaultReferenceException:SharedTokenCacheCredential 身份验证失败:AADSTS9002332:应用程序 'cfa8b339-82a2-471a-a3c9-0fc0be7a4093'(Azure Key Vault) 配置为仅供 Azure Active Directory 用户使用。请不要使用 /consumers 端点来处理此请求。 跟踪 ID:a4b9a7c9-8eb4-48ff-8871-8a63d69b1400 (Azure Key Vault) 配置为仅供 Azure Active Directory 用户使用。请不要使用 /consumers 端点来处理此请求。
我正在浏览此 Microsoft 文档页面上的示例: https://docs.microsoft.com/en-us/azure/azure-app-configuration/use-key-vault-references-dotnet-core?tabs=powershell%2Ccore3x
构建时没有错误,但是当我在本地主机上启动网站时,出现上述错误。
这是 Program.cs 文件中的代码:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog()
.ConfigureWebHostDefaults(webBuilder =>
webBuilder.ConfigureAppConfiguration((hostingContext, config) =>
{
var settings = config.Build();
config.AddAzureAppConfiguration(options =>
{
options.Connect(settings["ConnectionStrings:AppConfig"])
.ConfigureKeyVault(kv =>
{
kv.SetCredential(new DefaultAzureCredential());
});
});
})
.UseStartup<Startup>());
// See: https://github.com/MicrosoftDocs/azure-docs/issues/71592
谁能告诉我接下来要尝试什么?
如果要访问Azure Key Vault,请参考以下步骤
- 创建服务主体
az ad sp create-for-rbac -n "http://mySP" --sdk-auth
- 在 azure keyvault 中设置访问策略
az keyvault set-policy -n <your-unique-keyvault-name> --spn <clientId-of-your-service-principal> --secret-permissions delete get list set --key-permissions create decrypt delete encrypt get list unwrapKey wrapKey --secret-permissions backup delete get list purge recover restore set
- 代码
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
webBuilder.ConfigureAppConfiguration((hostingContext, config) =>
{
var settings = config.Build();
config.AddAzureAppConfiguration(options =>
{
options.Connect(settings["ConnectionStrings:AppConfig"])
.ConfigureKeyVault(kv =>
{
var cert = new ClientSecretCredential("<tenant id>", "client id", "client secret");
kv.SetCredential(cert);
});
});
})
.UseStartup<Startup>());
此外,如果您运行使用VS 2019的应用程序,您可以使用扩展Azure Service Authentication
。但是需要使用租户中的一个工作账号登录,并为key vault中的账号配置权限访问策略。详情请参考here