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

多租户Azure应用已授权Graph权限,按无用户访问流程生成令牌后如何访问资源?

如何通过无用户模式访问Microsoft Graph资源

看起来你已经走完了权限配置和令牌生成的关键流程,接下来可以按以下步骤正确调用Graph API:

1. 先确认令牌的有效性(重中之重)

因为你用的是无用户的客户端凭据模式,所以在jwt.ms里查看令牌时,重点关注这两个细节:

  • 检查roles声明:里面必须包含你授予的应用权限,比如User.Read.All、Device.Read.All这类(注意是应用权限,不是委托权限对应的scp声明)。如果没有这个字段或者缺少对应权限,说明权限授予没生效,得回去排查:
    • 确认你添加的是应用权限(不是委托权限)——客户端凭据模式只能使用应用权限
    • 确认点击「授予权限」的账号是全局管理员或拥有应用权限授予权限的管理员
    • 权限授予后可能需要几分钟才能生效,别着急立刻测试

2. 构建Graph API请求

拿到有效令牌后,就可以发起请求了:

  • 选择对应的Graph API端点:比如读取所有用户用GET https://graph.microsoft.com/v1.0/users,读取设备用GET https://graph.microsoft.com/v1.0/devices,具体端点可参考Graph官方文档的资源路径
  • 设置请求头:必须包含Authorization字段,格式为Bearer {你的访问令牌}(注意Bearer后面有个空格)
  • 举个curl命令的测试例子:
    curl -X GET "https://graph.microsoft.com/v1.0/users" \
    -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json"
    
    你也可以用Postman、PowerShell或者熟悉的编程语言发起请求,核心逻辑都是一致的。

3. 处理响应与排查问题

  • 请求成功的话,会返回对应的JSON数据(比如用户列表、设备列表)
  • 如果遇到403 Forbidden:
    • 先检查令牌里的roles是否包含所需权限
    • 确认权限已经被管理员授予(多租户环境下可能需要针对目标租户单独授予权限)
  • 如果遇到401 Unauthorized:
    • 检查令牌是否过期(看令牌里的exp字段)
    • 确认生成令牌时用的客户端ID、租户ID、客户端密钥/证书是否正确
  • 如果遇到404 Not Found:检查API端点路径是否正确,比如有没有写错版本(v1.0和beta的路径有区别)

额外注意事项

  • 多租户应用如果要访问其他租户的资源,需要目标租户的管理员同意你的应用权限,或者生成令牌时指定目标租户的ID
  • 遵循最小权限原则:虽然你分配了几乎所有读取权限,但实际开发建议只授予业务需要的权限,降低不必要的风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:50:58