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

AzureDefaultCredentials认证失败:Authorization Code为None的排查求助

排查Azure Python SDK认证失败问题

背景情况

  • 本地VS Code已通过az login完成登录,代码里试过DefaultAzureCredential()和AzureCliCredential()两种认证方式,结果都触发相同的认证错误
  • 把代码放到Azure Cloud Shell运行,同样报错
  • 自己排查时发现,执行az role assignment list --assignee <username>返回空数组[],虽然在Azure门户里觉得自己有操作权限

用到的代码

aad_credentials = DefaultAzureCredential()
URI = environ.get("DPS_ENDPOINT")
client = DeviceProvisioningClient(endpoint=URI, credential=aad_credentials)
group_id = 'symetric_group_test'
enrollment_group = {
    "enrollmentGroupId": group_id,
    "attestation": {
        "type": "symmetricKey"
    }
}
client.enrollment_group.create_or_update(id=group_id, enrollment_group=enrollment_group)

(注:原代码最后一行缺少闭合括号,已补充)

收到的错误信息

azure.core.exceptions.ClientAuthenticationError: (None) Authorization failed for the request
Code: None
Message: Authorization failed for the request

已做的尝试

  • 给客户端添加logging_enable=True参数,但没有输出任何日志信息
  • 替换成AzureCliCredential()单独使用,结果和DefaultAzureCredential()完全一致

排查提示与方向

  • 先确认真实的角色分配:az role assignment list --assignee <username>返回空,说明当前登录账号确实没有被分配任何RBAC角色,门户显示的权限可能是视觉误导或者权限范围不对。可以试试az role assignment list --all --assignee <username>查看所有订阅下的角色分配,或者用az account show确认当前操作的订阅,再检查该订阅内的角色配置。
  • 验证DPS资源的权限范围:要确保你的账号在目标DPS资源、它所在的资源组或者订阅层级,被分配了IoT Device Provisioning Service Contributor这类有操作权限的角色,光有门户的查看权限没用。
  • 直接测试访问令牌:运行az account get-access-token --resource https://azure-devices-provisioning.net拿到DPS的访问令牌,用这个令牌直接调用DPS的API,看看能不能正常操作,排除SDK本身的认证逻辑问题。
  • 检查环境变量和端点:确认DPS_ENDPOINT的值是正确的,格式应该是{你的DPS名称}.azure-devices-provisioning.net,端点错了也会导致权限验证失败。
  • 强制开启详细日志:除了logging_enable=True,可以手动加日志配置代码,开启DEBUG级别的日志,看看认证过程里的细节:
import logging
logging.basicConfig(level=logging.DEBUG)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:55:00