gpt4 book ai didi

c# - 为什么 DefaultAzureCredential 尝试在本地计算机上使用 ManagedIdentityCredential?

转载 作者:行者123 更新时间:2023-12-03 03:37:55 64 4
gpt4 key购买 nike

我尝试使用 DefaultAzureCredential 连接到 Azure 中托管的 key 保管库,代码如下:

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 authentication failed. Managed Identity response was not in the expected format. See the inner exception for details.

Status: 403 (GlobalBlock)

内部异常揭示:

'<' is an invalid start of a value. LineNumber: 0 | BytePositionInLine: 0.

我知道托管身份预计不会在本地工作,但我认为使用 DefaultAzureCredential 的目的是回退到另一种凭据类型,如 Microsoft 的 documentation 所示。 。因此,我希望它使用 VisualStudioCredential 来代替;事实上,如果我显式使用 VisualStudioCredential,那么应用程序会在本地运行(当然,在发布到 Azure 时不会运行)。

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

我使用的是 Visual Studio 2019 和 .NET 5.0。

最佳答案

您的本地计算机上是否安装了 Azure Arc 代理?

这将创建一个托管服务器标识,并且 DefaultAzureCredential 将尝试使用它。

代理将安装在 Program Files\AzureConnectedMachineAgent 中并设置以下环境变量:

IMDS_ENDPOINT=http://localhost:40342
IDENTITY_ENDPOINT=http://localhost:40342/metadata/identity/oauth2/token

https://learn.microsoft.com/en-us/azure/azure-arc/servers/managed-identity-authentication

关于c# - 为什么 DefaultAzureCredential 尝试在本地计算机上使用 ManagedIdentityCredential?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72642211/

64 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com