gpt4 book ai didi

azure-active-directory - getMemberGroups 调用因权限不足而失败

转载 作者:行者123 更新时间:2023-12-05 03:07:34 25 4
gpt4 key购买 nike

我正在尝试获取用户的组成员身份(可传递的)并为此使用 Microsoft Graph。我曾经在 token 中使用组声明,但在切换到 AD v2.0 端点(用于动态同意支持等)后, token 不包含这些声明,因此需要单独从 AD 中检索它们。

user/getMemberGroups操作确实如此,但我很难让它工作而不授予 Directory.Read.All 权限。文档说其中任何一个都应该有效:

  • User.ReadGroup.Read.All
  • User.ReadBasic.AllGroup.Read.All
  • Directory.Read.All
  • Directory.ReadWrite.All
  • Directory.AccessAsUser.All

然而,使用 Microsoft Graph 的代表访问 token ,请求总是失败并返回响应 403 Forbidden 和错误代码 Authorization_RequestDenied

HTTP请求

POST /v1.0/me/getMemberGroups HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer <removed>
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: dbb2ead3-9863-57ef-af09-d45c3ab88e69

{
"securityEnabledOnly": false
}

我实际上是使用 .NET SDK 来执行操作,但可以使用纯 HTTP 请求重现它,这样更清晰。

查看访问 token 内部,它同时具有 Group.Read.AllUser.Read.All,这应该是一个足够的组合。

{
"aud": "https://graph.microsoft.com",
[....]
"scp": "Group.Read.All User.Read User.Read.All"
}

当前用户是相关 AD 租户的全局管理员,因此我想这也不应该是他对 AD 项目的权限较低的问题。我已经使用 v2.0 端点完成了此应用程序的管理员同意(使用此管理员用户 AFAIK 时并不重要)

最佳答案

getMemberGroups函数应该只需要 Group.Read.All 和你的情况(对于 ../me/getMemberGroups)User.Read。但是,由于授权检查中的错误,目前这需要 Directory.Read.All(这是您观察到的)。恐怕我没有此修复的预计到达时间,但当我听到更多信息时会报告。

希望对您有所帮助,

关于azure-active-directory - getMemberGroups 调用因权限不足而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47217812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com