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

Azure Function在Visual Studio中无法获取Azure Key Vault密钥及身份排查

问题描述

我有一个包含多种项目类型的Visual Studio 2022解决方案,其中包含一个.NET Core网站和一个Azure Function应用。我使用Azure Key Vault存储密钥,网站项目中通过DefaultAzureCredential获取密钥完全正常,代码如下:

var keyVaultUrl = Environment.GetEnvironmentVariable("AzureKeyVaultUrl");
var client = new SecretClient(new Uri(keyVaultUrl), new DefaultAzureCredential());

var storageAccountName = client.GetSecretAsync("StorageAccountName").GetAwaiter().GetResult().Value;

但本地运行Azure Function应用时,用同样的方式从Azure Key Vault获取密钥却报错:

Azure.Identity.AuthenticationFailedException:
SharedTokenCacheCredential authentication failed: AADSTS9002332:
Application 'cfa8b339-82a2-471a-ju0L-0fc0be7a4093' (Azure Key Vault)
is configured for use by Azure Active Directory users only. Please do
not use the /consumers endpoint to serve this request.

我怀疑错误和Visual Studio运行Azure Function应用的进程身份有关,已尝试以管理员身份运行VS、检查“工具>选项>Azure服务身份验证”的登录状态,问题依旧。想知道:

  1. 如何检查Visual Studio中运行Azure Function应用的进程身份?
  2. 有哪些解决该错误的建议?
解决方法

一、检查Visual Studio中Azure Function的运行进程身份

  • 任务管理器查看:
    1. 启动Azure Function应用后,打开任务管理器,找到func.exe进程(本地Function的宿主进程)。
    2. 右键点击该进程,选择“属性”,切换到“详细信息”标签页,查看“用户名”列,即为进程运行的身份。
  • 代码输出身份信息:
    在Function代码中添加以下代码,运行时会直接输出当前进程身份:
    var currentIdentity = System.Security.Principal.WindowsIdentity.GetCurrent();
    Console.WriteLine($"当前进程身份:{currentIdentity.Name}");
    

二、解决AADSTS9002332错误的建议

1. 明确指定DefaultAzureCredential的验证优先级

DefaultAzureCredential会按顺序尝试多种验证方式,可能误用到了不适合的凭据(比如SharedTokenCacheCredential)。可以显式排除不需要的验证方式,优先使用Visual Studio凭据:

var credential = new DefaultAzureCredential(new DefaultAzureCredentialOptions
{
    ExcludeSharedTokenCacheCredential = true,
    ExcludeAzureCliCredential = false, // 可根据实际需求调整
    ExcludeVisualStudioCodeCredential = false
});
var client = new SecretClient(new Uri(keyVaultUrl), credential);

2. 检查Azure Key Vault的权限与网络设置

  • 登录Azure门户,找到目标Key Vault,进入访问控制(IAM),确保你的Visual Studio登录账号拥有Key Vault Secrets User或更高权限的角色。
  • 检查防火墙和虚拟网络设置:若启用了防火墙,需确保本地IP地址被加入允许列表,或者勾选“允许受信任的Microsoft服务绕过此防火墙”。

3. 重置Visual Studio的Azure身份缓存

缓存的凭据可能出现异常,按以下步骤重置:

  1. 完全关闭Visual Studio。
  2. 删除路径%LOCALAPPDATA%\.IdentityService下的缓存文件夹。
  3. 重新打开Visual Studio,重新登录Azure账号。

4. 改用Azure CLI凭据测试

先在本地终端登录Azure CLI:

az login

然后修改Function代码,使用Azure CLI凭据尝试获取密钥:

var credential = new AzureCliCredential();
var client = new SecretClient(new Uri(keyVaultUrl), credential);

如果这种方式可行,说明问题出在Visual Studio的凭据配置上,可针对性排查VS的身份验证设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:03:14