User.ReadBasic.All范围未授予,v2

时间:2018-05-13 17:46:05

标签: javascript azure-active-directory microsoft-graph

我正在尝试从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) }
)

);

  1. 我在登录时没有看到user.readbasic.all的任何同意消息
  2. 我没有在响应中收到User.ReadBasic.All我获得奖励的令牌范围。
  3. 我收到了user.read和calendars.readwrite
  4. 更新 我相信我正在缩小范围或租户类型的问题。虽然我有提示=同意作为参数,但我没有在我的个人帐户上获得user.readbasic.all范围。当我将授权链接发送给组织租户中的其他人时,他们会获得完整的权限列表。为什么不同用户有两个不同的权限页面?两个截图: org tenant personal tenant

1 个答案:

答案 0 :(得分:1)

stringify()方法正在将您的对象转换为application/json。这是不正确的,它应该是application/x-www-form-urlencoded

有关如何使用Axios执行此操作的详细信息,请参阅this GitHub Issue

此外,个人帐户(MSA)无法读取所有用户'基本概况"。作为一个"个人"帐户,只有一个用户关联。