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

升级azure-identity至1.16.1时遭遇DefaultAzureCredential错误求助

解决Azure Identity 1.16.1升级后DefaultAzureCredential认证失败问题

原因分析

从azure-identity 1.10.0升级到1.16.1版本后,DefaultAzureCredential的凭证链优先级或EnvironmentCredential的校验逻辑发生了调整。旧版本中可能会跳过未完全配置的EnvironmentCredential,自动尝试后续凭证(如ManagedIdentityCredential、AzureCliCredential等),但新版本对EnvironmentCredential的校验更严格,或凭证链触发顺序有变化,导致EnvironmentCredential未配置时直接抛出错误,未继续尝试其他可用凭证。

解决方案

1. 显式控制DefaultAzureCredential的凭证范围

如果你的环境不需要依赖EnvironmentCredential,直接在初始化时排除它,避免不必要的校验:

# Python示例,其他语言逻辑类似
from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential(exclude_environment_credential=True)

或者仅包含你实际使用的凭证类型(比如仅使用托管身份):

from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential(include_credentials=["ManagedIdentityCredential"])

2. 配置EnvironmentCredential所需环境变量(如需使用)

如果你的场景确实需要EnvironmentCredential,确保以下环境变量已正确设置:

  • AZURE_CLIENT_ID
  • AZURE_TENANT_ID
  • AZURE_CLIENT_SECRET(或AZURE_CLIENT_CERTIFICATE_PATH等对应凭证类型的变量)

3. 开启日志排查凭证链执行情况

通过开启azure-identity的调试日志,查看实际尝试的凭证顺序,确认是否有其他可用凭证被正确触发:

# Python示例,开启调试日志
import logging
logging.basicConfig(level=logging.DEBUG)

日志会显示DefaultAzureCredential尝试的所有凭证,帮助定位是否是凭证链逻辑变化导致的问题。

4. 验证依赖兼容性

虽然之前升级azure-storage-blob到12.13.0无问题,但可检查azure-identity 1.16.1与storage-blob 12.13.0的依赖匹配情况:

# Python项目查看依赖树
pipdeptree -p azure-storage-blob

补充说明

azure-identity在1.12.0及后续版本中对DefaultAzureCredential的行为做了多项调整,包括默认凭证类型、错误处理逻辑的优化,这是升级后出现差异的主要原因。通过显式控制凭证的包含/排除列表,可快速恢复到之前的认证行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:07:40