本地使用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
相关产品推荐
相关产品推荐

