You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新电脑使用DefaultAzureCredential访问Azure Key Vault遇权限拒绝错误求助

Azure Key Vault RBAC授权访问拒绝问题排查

问题描述

Web应用通过RBAC授权从公司共享Azure Key Vault获取密钥,正常运行无异常,但在新电脑上触发以下错误:

引发异常:“Azure.Identity.AuthenticationFailedException”位于System.Private.CoreLib.dll中
发生未处理的“Azure.Identity.AuthenticationFailedException”类型异常,位于System.Private.CoreLib.dll中
ManagedIdentityCredential 身份验证失败: 对路径'C:\ProgramData\AzureConnectedMachineAgent\Tokens\20f36e17-204a-4e08-b190-bda27a9402cb.key'的访问被拒绝。

凭据加载代码如下:

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

问题仅出现在新电脑,尝试过以管理员身份运行VS2022,但其他开发者用普通身份运行无此问题。

排查及解决方案

  • 检查目录权限
    新电脑上的C:\ProgramData\AzureConnectedMachineAgent\Tokens目录权限可能配置有误,确认当前用户对该目录及其中的.key文件拥有读取权限。操作路径:右键目录→属性→安全,添加当前用户并赋予读取权限。

  • 调整凭据优先级
    DefaultAzureCredential会按预设顺序尝试多种凭据类型,新电脑可能误触发了托管身份验证优先级。可通过配置禁用ManagedIdentityCredential,强制使用VS/VSCode等本地开发凭据:

    credentials = new DefaultAzureCredential(new DefaultAzureCredentialOptions()
    {
        VisualStudioTenantId = tenantId,
        SharedTokenCacheTenantId = tenantId,
        VisualStudioCodeTenantId = tenantId,
        InteractiveBrowserTenantId = tenantId,
        ExcludeManagedIdentityCredential = true // 添加此行排除托管身份验证
    });
    
  • 清理不必要的Agent
    若本地开发不需要使用托管身份,可卸载新电脑上的Azure Connected Machine Agent,避免DefaultAzureCredential自动尝试该验证方式。

  • 重置Azure登录状态
    新电脑上的VS/VSCode可能存在登录状态异常,尝试退出当前Azure账号后重新登录,确保使用的是拥有Key Vault访问权限的账号。

内容的提问来源于stack exchange,提问作者Ross Brasseaux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 12:17:28