【问题标题】:Microsoft Graph API get groups for user gives privileges errorMicrosoft Graph API 获取用户组赋予权限错误
【发布时间】:2017-05-19 20:36:18
【问题描述】:

要求: 我们想通过 Microsoft 的 Graph API 查询用户的群组,请求如下:

https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/user_getmembergroups

在我们的例子中,响应如下所示:

{
  "error": {
    "code": "Authorization_RequestDenied",
    "message": "Insufficient privileges to complete the operation.",
    "innerError": {
      "request-id": "a230a67e-8ef1-4f88-aa19-2c5b983c3de4",
      "date": "2017-01-04T16:29:55"
    }
  }
}

(注意:GET https://graph.microsoft.com/v1.0/me/ 工作正常并返回用户数据)

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
  "id": "e23976a1-8bd9-4cca-a410-e095d2c2022d",
  "businessPhones": [],
  "displayName": "XXXX Vad",
  "givenName": "XXXX",
  "jobTitle": null,
  "mail": null,
  "mobilePhone": null,
  "officeLocation": null,
  "preferredLanguage": null,
  "surname": "Vad",
  "userPrincipalName": "XXXX.vad_outlook.com#EXT#@XXXXvadoutlook.onmicrosoft.com"
}

环境:

  • 在 apps.dev.microsoft.com 上使用以下参数创建的应用程序: o 应用程序 ID:412386c3-8fa3-4000-9039-748111407XXX o 委托权限:[User.Read]
  • 此应用程序在“Azure 门户/AAD/企业应用程序”上可见,并且具有“BASIC”组的用户已添加到此应用程序中

从 AAD 获取的访问令牌示例:

{
  "aud": "https://graph.microsoft.com",
  "iss": "https://sts.windows.net/b9df6a2d-9150-45f9-abf0-9c30f9e527c7/",
  "iat": 1483548390,
  "nbf": 1483548390,
  "exp": 1483552290,
  "acr": "1",
  "aio": "AQABAAEAAADRNYRQ3dhRSrm-4K-adpCJhEVX2WEl4aboghl6AXaqOVcbaQPl1yYg1X1D2r4cNxBYmPvUiTKE9bB6wwpNSBKeD2OZXhrzdE3FPddCzbaTo84X8aSoKFaAt2vysYSv1HdChNXBPbfrVlA6YBuSwVwEIAA",
  "altsecid": "1:live.com:00037FFEC5917401",
  "amr": [
    "pwd"
  ],
  "app_displayname": "XXX test",
  "appid": "412386c3-8fa3-4000-9039-748111407XXX",
  "appidacr": "0",
  "email": "XXXX.vad@outlook.com",
  "family_name": "Vad",
  "given_name": "XXXX",
  "idp": "live.com",
  "ipaddr": "165.225.80.95",
  "name": "XXXX Vad",
  "oid": "e23976a1-8bd9-4cca-a410-e095d2c20XXX",
  "platf": "3",
  "puid": "10037FFE9D51DXXX",
  "scp": "User.Read",
  "sub": "sCDfsIUynhm4GdgPIe8hYguyNbbc7IBjZeKLd1UDXXX",
  "tid": "b9df6a2d-9150-45f9-abf0-9c30f9e52XXX",
  "unique_name": "live.com#XXXX.vad@outlook.com",
  "ver": "1.0"
}

我做错了什么或缺少什么?任何帮助表示赞赏。

【问题讨论】:

  • 所以你有权限阅读用户,但我想这并不意味着你可以阅读组?
  • 是的,我已将 apps.dev.microsoft 中的 User.READ 添加到我的应用程序中,并使用相同的 appId 来检索令牌(见上文)。虽然“aud”声明不是我的应用网址...
  • aud 声明说令牌是给谁的,所以这没有错。您可能需要其他一些权限。
  • 现在我检查了文档,看来范围应该足够了。但遗憾的是,关于所需范围的文档出现错误并不是第一次。同时,您应该尝试添加一些其他更高级别的权限,并查看哪个有效。

标签: azure authorization azure-active-directory azure-ad-graph-api


【解决方案1】:

您现在必须征得管理员同意才能拉取群组。他们不久前更改了所需的权限。

https://blogs.msdn.microsoft.com/aadgraphteam/2015/03/18/update-to-graph-api-consent-permissions/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多