【发布时间】: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