MS Graph Api 读取授予权限的用户

Posted

技术标签:

【中文标题】MS Graph Api 读取授予权限的用户【英文标题】:MS Graph Api Read Users that gave permissions 【发布时间】:2020-09-10 11:23:24 【问题描述】:

我有一个只需要委派权限的天蓝色应用注册。 用户允许以下范围:

https://graph.microsoft.com/contacts.readwrite https://graph.microsoft.com/mail.send https://graph.microsoft.com/calendars.readwrite https://graph.microsoft.com/User.ReadBasic.All

如何获取授予此访问权限的用户列表? 我需要这个来获取内部用户 ID。我的应用程序只有电子邮件,我需要使用 api 获取 id。

/Users 上的过滤器不会起作用。没有权限。。 但我不想分配范围“User.Read.All”,因为它需要管理员批准。

【问题讨论】:

【参考方案1】:

您需要做的是读取用户和 MS Graph API 服务主体之间的 oauth2PermissionGrants/delegated 权限授予。 文档:https://docs.microsoft.com/en-us/graph/api/user-list-oauth2permissiongrants?view=graph-rest-1.0&tabs=http

您可以通过以下方式查询:

GET /users/id | userPrincipalName/oauth2PermissionGrants

我尝试按范围过滤,但遗憾的是没有奏效,因此您可能需要解析它返回的列表以找到您正在寻找的范围。 您还应该在租户中找到 MS Graph API 的服务主体/企业应用程序的 objectId 并按此过滤。 这样您就不会错误地查看另一个 API 的范围。

此端点至少需要 Directory.Read.All 权限。 您需要得到管理员的批准才能获取此数据。

【讨论】:

以上是关于MS Graph Api 读取授予权限的用户的主要内容,如果未能解决你的问题,请参考以下文章

将 MS Graph 访问权限从一个帐户授予其他帐户 - 可能吗?

MS Graph API - 创建在线会议,不生成拨号会议信息。

如何使用 Facebook Graph API 读取 Instagram 用户

iOS 客户端:我可以让用户登录 Active Directory,但如何访问 MS Graph API?

如何授予用户对 SQL Server 中数据库的读取权限?

Facebook Graph API 2.5 - 无法访问好友