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

已配置访问策略,Azure应用服务仍无法向Key Vault认证

问题描述

我尝试向Azure Key Vault进行认证,仅通过Visual Studio工具设置中的认证方式成功过。以下是应用服务用于访问密钥保管库的代码:

public X509Certificate2 GetCertFromKeyVault()
{
    var client = new CertificateClient(new Uri("https://keyvaultname.vault.azure.net/"), new DefaultAzureCredential());
    var cert = client.DownloadCertificate("certname").Value;
    return cert;
}

密钥保管库已配置访问策略,其中应用标识和复合标识均指向应用服务的系统分配托管标识(而非用户分配),用户包含我和另一位成员。此外,除Visual Studio设置的认证方式外,我的凭据也无法完成认证,但我可通过Azure门户UI直接查看和编辑该密钥保管库。请问为何认证失败?

可能的原因及解决方法

一、应用服务系统托管标识的访问策略配置问题

  • 检查权限范围:确认给应用服务系统托管标识的访问策略中,是否包含Certificate/Get权限——代码调用的是DownloadCertificate,若仅配置了密钥或机密权限,证书操作会直接失败。
  • 核对标识关联:在Key Vault访问策略中,确认添加的应用标识是目标应用服务的系统分配托管标识。可通过应用服务“标识”页面复制客户端ID,在Key Vault访问策略的主体搜索中匹配验证。
  • 等待策略生效:Key Vault访问策略变更需数分钟才能完全生效,配置完成后等待5-10分钟再测试。

二、DefaultAzureCredential在应用服务中的优先级冲突

DefaultAzureCredential会按顺序尝试多种凭据类型,应用服务环境中默认优先使用系统托管标识,但可能存在以下干扰:

  • 环境变量冲突:若应用服务的应用设置中配置了AZURE_CLIENT_ID、AZURE_CLIENT_SECRET等变量,会覆盖托管标识的优先级,导致尝试使用无效凭据认证。检查并移除这类冲突配置。
  • 托管标识未启用:确认应用服务“标识”页面中,系统分配托管标识处于“开启”状态。

三、本地用户凭据认证失败的原因

你能通过门户操作Key Vault但本地认证失败,可能是这些问题:

  • 本地凭据未正确拾取:DefaultAzureCredential在本地会尝试Visual Studio、Azure CLI、Azure PowerShell等凭据。若仅Visual Studio成功,检查:
    • Azure CLI是否登录正确账号:运行az account show确认当前登录账号拥有Key Vault权限。
    • 多账号冲突:若本地登录多个Azure账号,DefaultAzureCredential可能拾取错误账号,可通过az account set --subscription <订阅ID>切换到正确订阅。
  • 用户权限不匹配:你在Key Vault的访问策略中是否拥有Certificate/Get权限?门户能查看编辑可能是因为有管理权限,但证书下载需要明确的证书操作权限,检查你的用户条目权限配置。

四、网络访问限制

  • Key Vault防火墙配置:若Key Vault启用防火墙,确认应用服务的出站IP已加入允许列表;本地开发时,你的公网IP是否在允许范围内?若开启“允许受信任的Microsoft服务”选项,需确认该选项已生效。
  • 虚拟网络连接问题:若应用服务部署在虚拟网络中,需确认VNet与Key Vault的网络连接(如私有端点、服务端点)配置正确,否则应用服务无法访问Key Vault。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 15:54:52