ManagedIdentityCredential 身份验证失败:访问路径...被拒绝

ManagedIdentityCredential authentication failed: Access to the path ... is denied

提问人:Ross Brasseaux 提问时间:9/17/2023 更新时间:9/20/2023 访问量:319

问:

我的 Web 应用程序从我们公司的共享 Azure Key Vault 中检索其机密,并通过 RBAC(基于角色的访问控制)授予其权限。这通常工作得很好,但是在我的新计算机上,我收到以下错误。

引发异常:“Azure.Identity.AuthenticationFailedException” System.Private.CoreLib.dll

类型未经处理的异常 “Azure.Identity.AuthenticationFailedException”发生在 System.Private.CoreLib.dll

ManagedIdentityCredential 身份验证 failed:访问路径 “C:\ProgramData\AzureConnectedMachineAgent\Tokens\20f36e17-204a-4e08-b190-bda27a9402cb.key” 被拒绝。

凭证实例正在通过以下代码加载:

credentials = new DefaultAzureCredential(new DefaultAzureCredentialOptions()
            {
                VisualStudioTenantId = tenantId,
                SharedTokenCacheTenantId = tenantId,
                VisualStudioCodeTenantId = tenantId,
                InteractiveBrowserTenantId = tenantId,
            });

奇怪的是,这只发生在我的新计算机上。我的下意识反应是以管理员身份运行 VS2022,但其他开发人员以自己身份运行它并且没有这个问题。

以前有人遇到过这种情况吗?

asp.net Azure Visual-Studio-2022 C#-7.0 defaultAzureCredential

评论

0赞 Harshitha 9/17/2023
请确保在 keyvault 中设置了托管标识。
0赞 Harshitha 9/17/2023
是否使用 keyvault 订阅的同一帐户登录到 VS?

答:

1赞 Ross Brasseaux 9/20/2023 #1

至少在这种情况下,我设法解决了该错误,方法是在实例化 DefaultAzureCredential 类时从源列表中排除托管标识凭据。可以通过 DefaultAzureCredentialOptions 类执行此操作,如下所示:

credentials = new DefaultAzureCredential(new DefaultAzureCredentialOptions()
            {
                VisualStudioTenantId = tenantId,
                SharedTokenCacheTenantId = tenantId,
                VisualStudioCodeTenantId = tenantId,
                InteractiveBrowserTenantId = tenantId,
                ExcludeManagedIdentityCredential = true // <-- added this line
            });

仍然不确定到底是什么导致了这个问题。