我正在尝试将.Net Core 3.1应用程序连接到Azure Key Vault。我已经按照quickstart教程进行操作,并且遇到以下错误:
Microsoft.Extensions.Configuration.AzureAppConfiguration.KeyVaultReferenceException: 'DefaultAzureCredential身份验证失败。错误代码: 密钥:身份验证:Twitter:ConsumerAPIKey
内部异常是:
MsalServiceException:AADSTS70002:客户端不存在或未为消费者启用客户端
CreateHostBuilder方法如下:
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 =>
{
kv.SetCredential(new DefaultAzureCredential());
});
});
})
.UseStartup<Startup>();
});
我很少在网上找到此参考,except one post与使用多个凭证有关(我不是)。
任何人都可以给我一个前进的方向:关于可能导致它的线索吗?
编辑
以下似乎有效:
var defaultAzureCredentialsOptions = new DefaultAzureCredentialOptions()
{
SharedTokenCacheTenantId = <tenant id>,
SharedTokenCacheUsername = <my azure username>,
ExcludeInteractiveBrowserCredential = false,
ExcludeEnvironmentCredential = false,
InteractiveBrowserTenantId = <tenant id>
};
config.AddAzureAppConfiguration(options =>
{
options.Connect(settings["ConnectionStrings:AppConfig"])
.ConfigureKeyVault(kv =>
{
kv.SetCredential(new DefaultAzureCredential(defaultAzureCredentialsOptions));
});
});
尽管这确实可行(就目前而言),但我现在有了租户ID和我的用户名硬编码;当我启动该网站并要求我登录时,还会弹出一个窗口。
答案 0 :(得分:0)
DefaultAzureCredential
会通过许多凭据,例如为Azure服务推荐的托管身份,因为它更安全(无共享访问令牌)。
但是,您可以使用为应用程序甚至在本地开发期间设置的环境变量,即:
list
和get
,以确保您在示例中使用它们的方式如果使用新的预览版本的Azure.Identity,它还支持Azure CLI,Visual Studio和其他开发环境的凭据。例如,如果您使用Azure CLI,一旦az login
,DefaultAzureCredential
就可以使用。