使用Microsoft Graph API访问AAD组返回空值,管理员登录仍异常
GET /v1.0/groups返回空数组的问题 你遇到的这个情况其实挺常见的——明明AAD里有组,自己也是管理员身份登录,结果调用API却返回空数组,大概率是下面几个原因之一,咱们一个个排查:
权限未正确授予或未完成管理员同意
就算你是租户管理员,Graph Explorer默认不会自动给你所有权限。调用GET /v1.0/groups需要至少Group.Read.All(只读)或者Group.ReadWrite.All(读写)权限,而且这类权限属于租户级权限,必须完成管理员同意才能生效。
排查步骤:- 在Graph Explorer界面右上角点击"Modify permissions"按钮(钥匙图标)。
- 在权限列表里找到
Group.Read.All并勾选。 - 点击列表上方的"Grant admin consent for [你的租户名称]"按钮,确认同意操作。
- 重新发起
GET https://graph.microsoft.com/v1.0/groups请求,应该就能看到目标组了。
登录的租户不正确
如果你有多个Azure AD租户的权限,可能不小心在Graph Explorer里登录到了其他没有这些组的租户。
排查步骤:
点击Graph Explorer右上角的用户头像,查看当前显示的租户名称是否是你创建OIC和testing组的那个租户,如果不是,切换到正确的租户再重试。管理员权限范围受限
不是所有管理员角色都能读取所有AAD组,比如"Exchange管理员"或"SharePoint管理员"这类角色,默认可能没有读取所有AAD组的权限。只有全局管理员、组管理员,或者拥有Directory.Read.All权限的角色才能完全访问所有组信息。
解决方法:确认你的管理员角色是全局管理员,或者通过Graph Explorer的管理员同意流程给当前账号分配Group.Read.All权限。组被软删除或处于特殊状态
虽然可能性较低,但可以检查一下这些组是不是被软删除了:调用GET https://graph.microsoft.com/v1.0/directory/deletedItems/microsoft.graph.group,看看返回结果里有没有OIC和testing组。如果有的话,需要先恢复它们,才能在正常的groups端点看到。
按照上面的步骤排查,应该能解决你的问题。
内容的提问来源于stack exchange,提问作者bippan

