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

使用Python集成Azure服务主体时遇认证错误求助

问题排查与解决方案

1. 核心问题:代码凭证与Azure配置完全不匹配

对比你提供的Azure服务主体配置和Python代码中的值,发现所有关键ID都不对应:

  • Azure配置的Tenant-ID:17c0c865-051b-4f31-a440-6271cc6103ee,代码中写的是634a6451-0a9a-41e3-b71b-d8752ce3166f
  • Azure配置的Application ID(即client_id):cf306ed7-b8f8-47ad-ac94-f35733b27abd,代码中是bcc8288c-81ad-41e4-a6e6-6d500b839710
  • Azure配置的Subscription-ID:036bf99e-060d-4177-8373-45fa90dd9a3b,代码中是c2a322de-9475-46db-a873-d4a98653874f

这是导致认证失败的直接原因,必须将代码中的所有ID替换为Azure门户中对应的正确值。

2. 后续排查点(修正ID后仍有问题时)

  • 客户端密钥有效性:确认使用的Client-Secret是服务主体的有效密钥,未过期或被删除。可在Azure门户的服务主体「证书和机密」页面重新生成密钥,替换代码中的值。
  • 权限范围验证:虽然你提到服务主体有Contributor权限,需确认该权限直接分配到目标订阅,而非仅资源组或管理组。可通过Azure CLI校验:
    az role assignment list --assignee cf306ed7-b8f8-47ad-ac94-f35733b27abd --subscription 036bf99e-060d-4177-8373-45fa90dd9a3b
    
    检查输出是否包含Contributor角色,且作用域为/subscriptions/036bf99e-060d-4177-8373-45fa90dd9a3b。
  • 网络访问限制:若运行环境在企业内网,可能存在防火墙或代理阻止Azure认证端点访问。可尝试在无限制的环境中运行代码,或配置HTTP_PROXY、HTTPS_PROXY环境变量适配代理。
  • SDK版本问题:确保azure-identity和azure-mgmt-resource包为最新版本,旧版本可能存在认证逻辑bug。执行以下命令更新:
    pip install --upgrade azure-identity azure-mgmt-resource
    

修正后的示例代码

将所有ID替换为Azure门户的正确值:

from azure.identity import ClientSecretCredential
from azure.mgmt.resource import ResourceManagementClient

# 替换为Azure门户中的正确配置值
tenant_id = "17c0c865-051b-4f31-a440-6271cc6103ee"
client_id = "cf306ed7-b8f8-47ad-ac94-f35733b27abd"
client_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"  # 替换为有效密钥
subscription_id = "036bf99e-060d-4177-8373-45fa90dd9a3b"

credential = ClientSecretCredential(tenant_id, client_id, client_secret)
client = ResourceManagementClient(credential, subscription_id)

for rg in client.resource_groups.list():
    print(rg.name)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 00:58:19