javascript - User.ReadBasic.All 范围未授予,v2
问题描述
我正在尝试从 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 范围。当我将授权链接发送给组织租户中的其他人时,他们会获得完整的权限列表。为什么不同的用户会有两个不同的权限页面?两张截图:
解决方案
该stringify()
方法是将您的对象转换为application/json
. 这是不正确的,应该是application/x-www-form-urlencoded
。
有关如何使用 Axios 执行此操作的详细信息,请参阅此 GitHub 问题。
此外,个人帐户 (MSA) 无法“读取所有用户的基本资料”。作为“个人”帐户,只有一个用户关联。
推荐阅读
- python - 无法为 MD 处理巨大的轨迹文件
- swift - 使用 Codable 时链接 Realm 对象
- javascript - 在滚动父页面上显示 div 元素 css 或 javascript
- typescript - 包装重载的 Typescript 函数
- angular - 每次单击选项卡导航项时,页面都会重新加载。角度和引导
- javascript - 不一致的 Array.includes() 行为 - 相同的数组返回不同的结果
- sql-server - 查询以在指定字符串和两行中的数字之间划分字符串
- r - 小标题的数字打印格式
- java - jpa命名本机查询无结果
- react-admin - 如何使用 react-admin 合并表格中的两个或多个单元格?