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

连接Azure Key Vault报Access denied to first party service如何解决

问题原因&解决步骤

1. 修正Key Vault名称传参错误

你当前使用的AddAzureKeyVault重载第一个参数要求传入Key Vault的名称字符串,而非完整访问URI,你appsettings.json里的VaultName配了完整URI,会导致认证路由错误。
修改appsettings.json配置:

"VaultName": "connectionstringkeyvault"

如果要使用完整URI,可以切换对应重载,写法如下:

config.AddAzureKeyVault(new Uri(vaultName), new DefaultAzureCredential(), new DefaultKeyVaultSecretManager());

2. 修正DefaultAzureCredential认证逻辑

本地调试时DefaultAzureCredential会按顺序读取环境变量、VS登陆账号、Azure CLI登陆账号、托管身份等凭证,你初始化时传了false参数禁用了交互式认证,如果当前环境没有默认凭证可用,就会拿不到合法token。
可以先调整初始化参数开启本地调试支持:

var credential = new DefaultAzureCredential(new DefaultAzureCredentialOptions { ExcludeInteractiveBrowserCredential = false });

本地运行前先确保你VS/VS Code登陆的Azure账号,或者执行az login登陆的账号,和你Key Vault访问策略里配置的授权账号一致。

3. 校验Key Vault访问策略配置

确认你访问策略中给当前使用的账号/服务主体授予了机密的Get、List权限,注意不要只给了其他权限(比如密钥、证书相关权限)。如果是部署到Azure服务,要给对应服务的托管身份授权对应机密权限。

4. 检查Key Vault网络配置

如果你的Key Vault开启了公共网络访问限制,需要将你本地调试的公网IP添加到Key Vault的防火墙允许列表中,否则也会触发访问拒绝异常。

5. 建议迁移到新SDK

你当前用的Microsoft.Azure.KeyVault属于已经停止维护的旧SDK,推荐替换为官方新的Azure.Security.KeyVault.Secrets和Azure.Extensions.AspNetCore.Configuration.Secrets包,写法更简洁,也避免旧版本的兼容问题:

.ConfigureAppConfiguration((context, config) =>
{
    var builtConfig = config.Build();
    var vaultUri = new Uri(builtConfig["VaultUri"]);
    config.AddAzureKeyVault(vaultUri, new DefaultAzureCredential());
})

对应的appsettings.json配置:

"VaultUri": "https://connectionstringkeyvault.vault.azure.net/"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:18:02