我想向非管理员用户 Bob 授予一些 Graph API 权限,以便它能够读取一些数据无需需要管理员同意。
如果我在此处给予管理员同意,则所有权限都会授予每个用户,但我只想向 Bob 授予一部分权限。
所以我:
但是,以 Bob 身份登录后,图形浏览器告诉我,我没有所需的权限(例如)列出组织中的所有用户。
非常感谢任何帮助!
我尝试在我的环境中重现相同的结果并得到以下结果:
我注册了一个 Azure AD 应用程序并授予了列出用户所需的特定
API permissions
,如下所示:
我创建了一个非管理员用户
Bob
并分配了如下应用程序:
我尝试使用以下查询通过 Microsoft Graph Explorer 列出用户,并以
Bob
身份登录,并得到了相同的错误:
请注意,即使您在 Azure 门户中授予管理员同意,也不会反映在 Graph Explorer 中。因此,您必须在 Graph Explorer 中单独同意
Bob
。
转到修改权限 -> User.ReadBasic.All -> 同意 -> 接受
在同意后我成功得到回复,如下所示:
在您的场景中,如果未经管理员同意
Bob
无法请求它们,请尝试修改如下设置:
转到 Azure 门户 -> Azure Active Directory -> 企业应用程序 -> 同意和权限 -> 用户同意设置
确保通过单击修改权限选项卡在 Microsoft Graph Explorer 中根据查询授予同意。
参考资料:
Graph Explorer 使用 Microsoft 所说的“逐步同意”。这意味着它请求的令牌(并且用户同意)是在运行时配置的。
因此,如果您批准了某些权限,您可以要求 Bob 在图形浏览器中更改为他请求的权限。 一旦鲍勃按下“确定”(不确定按钮说什么......),他就会看到一个新的同意屏幕。 Bob 将获得一个新令牌,您应该能够在门户的“用户同意”选项卡中看到该令牌。
它还有助于复制令牌并将其粘贴到https://jwt.ms,这样可以轻松概览令牌中的所有声明(包括范围)。
我也有同样的情况,授予用户访问共享邮箱的权限。我已授予 mail.readwrite 的委派管理员同意,并且用户已委派 mail.readwrite。此外,作为在线交换,用户可以完全访问共享邮箱。我仍然得到 403。
您的问题解决了吗?