【问题标题】:Microsoft Graph API: Insufficient privileges to complete the operationMicrosoft Graph API:权限不足,无法完成操作
【发布时间】:2017-08-03 12:55:29
【问题描述】:

问题

通过 ADAL 为 Microsoft Graph API 生成访问令牌时,Graph API 不接受该令牌。

{
  "odata.error": {
    "code": "Authorization_RequestDenied",
    "message": {
      "lang": "en",
      "value": "Insufficient privileges to complete the operation."
    }
  }
}

应用程序做什么

应用程序应读取租户的所有用户。该应用程序配置为具有User.Read.All 权限。应用程序同意由租户授予,用户应从中读取 - 应用程序确实以权限显示在 Azure 门户中。

到目前为止我所拥有的

该应用程序几天前工作了,我什么也没做。其他应用程序使用相同的方式来验证工作。

  • 重新创建到 AAD 应用程序没有帮助
  • 重新安装 NuGet 包没有帮助
  • 将权限从 login.windows.net 更改为 login.microsoftonline.com 没有帮助
  • 令牌生成不适用于客户端机密,也不适用于证书
  • 解码生成的 JWT 令牌显示操作所需的权限

【问题讨论】:

  • JWT 具体显示哪些权限?因为如果他们在那里,如果他们是正确的,它应该可以工作。
  • JWT 令牌显示:“Group.Read.All”和“User.Read.All”。我知道,它应该可以工作......微软的一张票已经打开了:-)
  • 您调用的 URL 是 https://graph.microsoft.com/v1.0/users,而 JWT 中的 aud 声明是 https://graph.microsoft.com 对吧?
  • 是的,这是正确的。
  • 好吧,那我没主意了。希望你的票能很快得到回应:)

标签: azure oauth-2.0 jwt adal azure-ad-graph-api


【解决方案1】:

解决方案

看来,microsoft 的文档不正确。列出用户需要Directory.Read 权限。

更新

根据微软的说法,不清楚这是 Graph API 中的错误还是文档有误。
一个问题在 Github here 开放。

更新 2

此问题已在 2017 年 5 月的 Graph API 更新中得到修复。

【讨论】:

  • 现在似乎解决了(问题也在 GitHub 上关闭)。 :)
  • 我在哪里可以从 Azure 门户提供 Directory.Read 权限?我没有在 IAM 部分看到它们。