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

本地使用Rider调试Azure Function时出现AKV10032无效颁发者错误的排查问询

解决本地调试Azure Function时DefaultAzureCredential的租户不匹配问题

这问题我之前调试Azure Function时也踩过坑,咱们一步步来梳理原因和解决办法:

为什么会出现凭证不匹配?

DefaultAzureCredential是按优先级顺序从多个本地凭证源中获取凭证的,包括:

  • 环境变量(AZURE_TENANT_ID、AZURE_CLIENT_ID等)
  • Azure CLI缓存的凭证
  • Rider/Visual Studio绑定的Azure账户
  • Azure PowerShell缓存的凭证
  • 本地开发的Managed Identity(一般本地环境没有)

你遇到的情况,大概率是Rider绑定的账户或者Azure CLI缓存里的其他租户凭证优先级更高,导致用了结尾为b4b的租户,而非你az account show显示的90a租户。另外,az account show显示的是当前激活订阅对应的租户,但Azure CLI允许同时登录多个租户,az login如果没指定租户,可能默认登录了工作账户对应的b4b租户,而DefaultAzureCredential可能取的是CLI缓存里的第一个有效凭证,不是当前激活的那个。

本地凭证存储在哪里?

  • Azure CLI缓存:Windows是C:\Users\<你的用户名>\.azure\,Linux/macOS是~/.azure/,里面的accessTokens.json文件保存了所有登录过的租户凭证。
  • Rider的Azure账户:凭证存在系统的安全存储中——Windows是「凭据管理器」,macOS是「钥匙串访问」,Linux是GNOME Keyring/KDE Wallet。你可以在Rider的设置里直接查看绑定的账户:File -> Settings -> Tools -> Azure。

解决步骤

1. 检查并修正Rider绑定的Azure账户

打开Rider的设置面板,找到Tools -> Azure,查看已绑定的账户:

  • 如果里面有结尾为b4b的租户账户,直接删除
  • 添加正确的90a租户账户,确保登录时选择对应的租户

2. 清理Azure CLI缓存并重新指定租户登录

  • 找到Azure CLI的缓存目录,删除accessTokens.json文件
  • 打开终端,用指定租户登录:
az login --tenant xxxxxxxx-xxxx-xxxx-xxxx-4a5f0358090a
  • 激活正确的订阅:
az account set --subscription <你的订阅ID>
  • 再次运行az account show确认当前租户是90a

3. 强制DefaultAzureCredential使用指定租户

如果上面的方法还是没解决,可以在初始化凭证时直接指定租户ID,从根源避免歧义:

default_credentials = DefaultAzureCredential(tenant_id="xxxxxx-xxxx-xxxx-xxxx-4a5f0358090a")
keyvault = SecretClient(
    vault_url=azure_shared.key_vault,
    credential=default_credentials
)

4. 检查环境变量

查看本地有没有设置AZURE_TENANT_ID、AZURE_CLIENT_ID等环境变量,如果这些变量指向的是b4b租户,需要修改为正确的90a租户ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 15:58:10