Я пытаюсь найти всех пользователей, которым разрешен доступ к сайту в SharePoint Online.
Я могу сделать это через REST API SharePoint, используя следующий запрос:
https://<tenant>.sharepoint.com/sites/<site>/_api/web/RoleAssignments?$expand=Member/Users,RoleDefinitionBindings
Ответ содержит некоторые скрытые технические учетные записи, пользователей, которым явно предоставлены разрешения, и группы сайта SharePoint по умолчанию для участников и владельцев. Группа участников сайта SharePoint представлена со следующим именем пользователя:
c:0o.c|federateddirectoryclaimprovider|<UUID>
Где <UUID>
— идентификатор группы Azure. Затем я могу разрешить его элементы с помощью Graph API. Однако здесь отсутствует пользователь, указанный в пользовательском интерфейсе SharePoint как владелец сайта.
Однако группа владельцев сайта SharePoint представлена со следующим именем пользователя:
c:0o.c|federateddirectoryclaimprovider|<UUID>_o
Где <UUID>
— тот же идентификатор, что и раньше. Поэтому я не могу разрешить его членов с помощью Graph API, поскольку UUID дает мне группу участников, а UUID, включая суффикс, является недопустимым идентификатором группы.
Кроме того, REST API SharePoint, по-видимому, рассматривает эту группу владельцев (а также группу участников) как пользователя, а не как группу, поэтому я также не смог найти способ разрешить ее участников с помощью этого API.
Итак, как я могу определить реальных пользователей, которые являются владельцами сайта?
Большое спасибо!
Разве это не так просто?
https://<tenant>.sharepoint.com/sites/<site>/_api/site/owner
Решение описано здесь: https://docs.microsoft.com/en-us/sharepoint/modern-experience-sharing-permissions#team-site-permissions-and-office-365-groups
When you add owners or members to the Microsoft 365 group, they're given access to the SharePoint site along with the other group-connected services. Group owners become site owners, and group members become site members.
Это означает, что вы можете получить владельцев сайта с помощью следующего запроса:
https://graph.microsoft.com/v1.0/groups/<UUID>/owners
Это возвращает тот же объект
<UUID>_o
.