【发布时间】:2018-05-13 17:46:05
【问题描述】:
我正在尝试从 v2 Azure 目录请求以下 3 个 oauth 范围:user.read、user.readbasic.all、calendars.readwrite。
我的授权GET请求是
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?'
+ '&client_id=myclientid'
+ '&response_type=code'
+ `&redirect_uri=myredirecturl`
+ '&response_mode=query'
+ '&scope=user.read%20user.readbasic.all%20calendars.readwrite'
+ '&prompt=consent';
请注意,自上次授权以来,我已排除更改同意类型的可能性。
我成功获得了一个代码,并将它换成一个令牌:
axios.post(
'https://login.microsoftonline.com/common/oauth2/v2.0/token',
querystring.stringify(
{
client_id: my_client_id,
client_secret: my_app_secret,
grant_type: 'authorization_code',
code,
scope: 'user.readbasic.all user.read calendars.readwrite',
redirect_uri: my_redirect_url
},
null,
null,
{ encodeURIComponent: s => encodeURI(s) }
)
);
- 我在登录时没有看到
user.readbasic.all的任何同意消息 - 我没有收到
User.ReadBasic.All对我获得奖励的令牌范围的响应。 - 我正在接收 user.read 和 calendars.readwrite
更新 我相信我正在将问题缩小到改变范围或租户类型。虽然我有 prompt=consent 作为参数,但我没有在我的个人帐户上获得 user.readbasic.all 范围。当我将授权链接发送给组织租户中的其他人时,他们会获得完整的权限列表。为什么不同的用户会有两个不同的权限页面?两张截图:
【问题讨论】:
-
您是否在该 AADv2 应用程序中添加了委派权限
user.readbasic.all? -
是的,我在apps.dev.microsoft.com完成了这项工作
-
尝试在范围内使用
https%3A%2F%2Fgraph.microsoft.com%2Fcalendars.readwirte%20 https%3A%2F%2Fgraph.microsoft.com%2Fuser.read%20 https%3A%2F%2Fgraph.microsoft.com%2Fuser.readbasic.all。
标签: javascript azure-active-directory microsoft-graph-api