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

Azure Graph报错:Access Token缺失或格式错误,获取AD用户信息遇阻

嘿,我来帮你搞定这个「Access Token missing or malformed」的问题!咱们先唠唠根源:你的代码里没指定Azure AD Graph API的资源标识符,导致生成的访问令牌不是给这个API用的,服务器自然不认。另外还要提一句,azure-graphrbac这个库已经被微软弃用了,更推荐用Microsoft Graph SDK,但先给你两种可行的解决办法:

解决Azure Graph RBAC API令牌错误方案

方案1:修复现有旧库代码

要让ServicePrincipalCredentials生成正确的令牌,必须加上resource参数,指定Azure AD Graph API的地址https://graph.windows.net。修改后的代码如下:

from azure.common.credentials import ServicePrincipalCredentials
from azure.graphrbac import GraphRbacManagementClient

TENANT = 'something.onmicrosoft.com'
TENANT_ID = '...'
CLIENT_ID = '...'
SECRET = '...'

credentials = ServicePrincipalCredentials(
    client_id=CLIENT_ID,
    secret=SECRET,
    tenant=TENANT,
    resource="https://graph.windows.net"  # 关键:新增这个资源标识参数
)

client = GraphRbacManagementClient(credentials, TENANT_ID)
# 注意:list()转成列表,不然是分页迭代器
users = list(client.users.list())
for user in users:
    print(user.user_principal_name)

加了这个参数后,凭据生成的令牌就会被Azure AD Graph API认可,就能正常拉取用户信息了。

方案2:迁移到微软推荐的Microsoft Graph SDK

因为azure-graphrbac已经停止维护,现在微软主推Microsoft Graph,功能更全、后续支持也更到位。给你贴个新SDK的实现代码:

先装必要的包:

pip install msgraph-core azure-identity

然后编写业务代码:

from azure.identity import ClientSecretCredential
from msgraph.core import GraphClient

TENANT_ID = '...'
CLIENT_ID = '...'
SECRET = '...'

# 创建凭据,Microsoft Graph默认范围是https://graph.microsoft.com/.default
credential = ClientSecretCredential(
    tenant_id=TENANT_ID,
    client_id=CLIENT_ID,
    client_secret=SECRET
)

# 初始化Graph客户端
client = GraphClient(credential=credential)

# 调用获取用户列表的接口(v1.0版本端点)
response = client.get('/users')
users = response.json()
for user in users.get('value', []):
    print(user['userPrincipalName'])

额外检查点

最后别忘了确认这两点:

  • 你的服务主体(Service Principal)已经被授予Directory.Read.All(或其他合适的权限),并且完成了管理员同意(如果是应用级权限的话);
  • TENANT_ID、CLIENT_ID、SECRET这些参数没有拼写错误,都是正确的有效值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:35:22