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

WinForm本地获取Azure KeyVault密钥失败:DefaultAzureCredential无法获取令牌

解决本地WinForm应用访问Azure KeyVault的凭据问题

你遇到的DefaultAzureCredential failed to retrieve a token from the included credentials错误,是因为本地调试时没有配置能被DefaultAzureCredential识别的有效凭据。以下是几种可行的本地调试解决方案:

方案1:通过Azure CLI登录获取凭据

  • 安装Azure CLI后,打开命令提示符执行az login,登录拥有目标KeyVault访问权限的Azure账号。
  • DefaultAzureCredential会自动读取CLI的登录会话凭据,无需修改代码即可完成本地调试的身份验证。
  • 确认你的账号在KeyVault的访问策略中已被授予Secret Get权限。

方案2:使用Visual Studio账户身份

  • 在Visual Studio右上角点击账户图标,登录拥有KeyVault访问权限的Azure账号。
  • 右键项目 → 属性 → 调试,确保"启用Azure身份验证"选项已勾选(部分Visual Studio版本需手动开启)。DefaultAzureCredential会自动拾取Visual Studio的登录身份。

方案3:配置服务主体环境变量

  • 在Azure AD中创建一个服务主体,并为其分配KeyVault的Secret Get权限。
  • 在本地系统中添加以下环境变量:
    • AZURE_CLIENT_ID:服务主体的客户端ID
    • AZURE_CLIENT_SECRET:服务主体的客户端密钥
    • AZURE_TENANT_ID:你的Azure租户ID
  • 重启Visual Studio后运行程序,DefaultAzureCredential会读取这些环境变量完成身份验证。

辅助排查建议

可以修改代码中的异常处理逻辑,打印更详细的错误信息,帮助定位具体失败原因:

catch (Exception ex)
{
    Console.WriteLine($"获取密钥失败:{ex.Message}");
    if (ex.InnerException != null)
    {
        Console.WriteLine($"内部错误详情:{ex.InnerException.Message}");
    }
    throw;
}

内容的提问来源于stack exchange,提问作者Irshad Faras

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:11:10