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

.NET控制台应用Key Vault认证异常:运行EXE无法获取令牌

解决方案

方法一:使用ClientSecretCredential直接认证

修改代码,替换DefaultAzureCredential为ClientSecretCredential,传入租户ID、客户端ID和服务主体密钥完成认证:

using Azure.Identity;
using Azure.Security.KeyVault.Secrets;

// 替换为你的实际参数
var tenantId = "你的租户ID";
var clientId = "你的客户端ID";
var clientSecret = "你的服务主体密钥";

var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
var secretClient = new SecretClient(new Uri("https://你的密钥保管库名称.vault.azure.net/"), credential);

// 替换为你要获取的密钥名称
var secret = await secretClient.GetSecretAsync("目标密钥名称");
Console.WriteLine("获取到的密钥值:" + secret.Value.Value);

方法二:通过环境变量启用EnvironmentCredential

如果不想在代码中硬编码凭据,可以配置环境变量让DefaultAzureCredential自动使用环境凭据认证,无需修改原代码:

需要设置的环境变量:

  • AZURE_TENANT_ID: 你的租户ID
  • AZURE_CLIENT_ID: 你的客户端ID
  • AZURE_CLIENT_SECRET: 你的服务主体密钥

Windows环境设置方式:

  • 临时生效(当前命令行窗口):
    打开PowerShell执行:
    $env:AZURE_TENANT_ID = "你的租户ID"
    $env:AZURE_CLIENT_ID = "你的客户端ID"
    $env:AZURE_CLIENT_SECRET = "你的服务主体密钥"
    # 运行你的EXE文件
    .\你的应用程序.exe
    
  • 永久生效:
    打开命令提示符执行:
    setx AZURE_TENANT_ID "你的租户ID"
    setx AZURE_CLIENT_ID "你的客户端ID"
    setx AZURE_CLIENT_SECRET "你的服务主体密钥"
    
    重启命令提示符后运行EXE即可。

关键前提

  • 确保你的服务主体已被授予Key Vault的访问权限(如添加"密钥保管库机密用户"角色),否则即使认证成功也无法读取密钥。
  • 服务主体的密钥是Azure AD中生成的凭据,并非Key Vault中存储的密钥名称,注意区分两者。

内容的提问来源于stack exchange,提问作者rahul kaushik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:51:24