【问题标题】:Why is DefaultAzureCredential trying to use ManagedIdentityCredential on a local machine?为什么 DefaultAzureCredential 尝试在本地计算机上使用 ManagedIdentityCredential?
【发布时间】:2022-06-16 15:44:43
【问题描述】:

我正在尝试使用DefaultAzureCredential 使用以下代码连接到托管在 Azure 中的密钥保管库:

using System;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Configuration;    // Azure.Extensions.AspNetCore.Configuration.Secrets 1.2.2
using Azure.Identity;                        // Azure.Identity 1.6.0

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration(builder =>
        {
            Uri keyVaultUrl = new(builder.Build().GetSection("keyVaultUrl").Value);
            DefaultAzureCredentialOptions options = new() { ExcludeEnvironmentCredential = true, ExcludeSharedTokenCredential = true };

            builder.AddAzureKeyVault(keyVaultUrl, new DefaultAzureCredential(options));
        })
        .ConfigurationWebHostDefaults(webBuilder => 
        {
            webBuilder.UseStartup<Startup>();
        });

当我的 Web 应用程序发布到 Azure 并成功使用我设置的系统托管标识时,代码运行良好,但在本地运行时遇到以下异常:

Azure.Identity.AuthenticationFailedException: 'ManagedIdentityCredential 身份验证失败。托管身份响应不是预期的格式。有关详细信息,请参阅内部异常。

状态:403(全局块)

内部异常显示:

'

我了解托管身份不会在本地工作,但我认为使用 DefaultAzureCredential 的目的是回退到另一种凭据类型,如 Microsoft 的 documentation。因此,我希望它改用VisualStudioCredential;事实上,如果我明确使用VisualStudioCredential,那么应用程序确实会在本地运行(当然,在发布到 Azure 时不会)。

我有点不知所措,无法解释我所看到的行为,并且不确定如何配置 DefaultAzureCredential 以便它在本地和 Azure 中都有效。有人有什么想法吗?

我正在使用 Visual Studio 2019 和 .NET 5.0。

【问题讨论】:

标签: c# azure asp.net-core


猜你喜欢
  • 2021-02-15
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 2013-04-10
  • 2014-04-15
  • 1970-01-01
相关资源
最近更新 更多