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

配置eDiscovery.ReadWrite.All权限后调用Graph接口仍返回401问题排查

eDiscoveryCases接口调用401错误排查

问题描述

我正尝试自动化清理操作,已创建应用并授予其eDiscovery.ReadWrite.All应用权限,完成授权后获取了OAuth2访问令牌,且验证JWT令牌中包含该权限。调用https://graph.microsoft.com/v1.0/users接口正常,但调用https://graph.microsoft.com/v1.0/security/cases/ediscoveryCases接口时返回401错误。根据官方文档,该应用权限应足以访问此端点,请问是否遗漏了配置?是否需要额外权限?或者实际需使用委托权限而非应用权限?

相关代码

获取访问令牌并创建请求头

body = { "client_id": app, "scope": "https://graph.microsoft.com/.default", "grant_type": "client_credentials", "client_secret": secret }
token = requests.post("https://login.microsoftonline.com/{}/oauth2/v2.0/token".format(tenant), data=body).json()['access_token']
header = { 'Authorization': "Bearer {}".format(token) }

调用用户接口验证令牌有效性

users = requests.get('https://graph.microsoft.com/v1.0/users', headers=header).json()['value']
len(users)

返回结果为100,说明令牌有效。

解析JWT令牌确认权限

decoded = jwt.decode(token, options={'verify_signature': False})['roles']
pprint.pprint(decoded)

得到的角色列表包含eDiscovery.ReadWrite.All。

调用ediscoveryCases接口触发401错误

requests.get('https://graph.microsoft.com/v1.0/security/cases/ediscoveryCases', headers=header)
<Response [401]>

问题排查与解决

  • 确认权限生效状态:虽然令牌中显示包含eDiscovery.ReadWrite.All权限,但需确认该权限已由全局管理员完成同意操作,且等待15-30分钟让权限生效(部分权限授予后存在延迟)。
  • 添加应用到电子数据展示管理员角色组:security/cases/ediscoveryCases端点的应用权限访问,要求应用必须被添加到电子数据展示管理员角色组中。仅授予应用权限不足以完成访问控制,需在Microsoft 365管理中心或通过Graph API将应用纳入该角色组。
  • 委托权限的适用性:若应用权限配置后仍无法访问,可尝试使用委托权限模式(需用户交互授权),但此模式要求授权用户本身具备电子数据展示相关权限,且不适用于无人值守的自动化场景。
  • 校验令牌范围:确保获取令牌时的scope参数为https://graph.microsoft.com/.default,该参数会自动包含所有已授予的应用权限,无需手动指定单个权限项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:55:07