问题描述
我有一个天蓝色的应用程序注册,只需要委派权限。 用户允许以下范围:
- 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。
/用户的过滤器不会使麦芽汁变味。没有权限.. 但我不想分配范围“ User.Read.All”,因为它需要管理员的批准。
解决方法
要获取该信息,您需要做的是阅读用户与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权限。 您需要获得管理员的批准才能获取此数据。