Это один из тех самых общих требований, который очень быстро становится очень сложным. Похоже, они пытаются создать какой-то аудит безопасности.
Если вы предполагаете, что на каждом сайте есть только группы SharePoint, заполненные пользователями SharePoint, и все наследует разрешения, то это мало. Вы можете рекурсивно перебирать каждый SPWeb (и под-SPWeb в каждом SPWeb), чтобы найти все SPGroups. Затем, используя словарь, вы будете отслеживать пользователей, которых вы найдете, и уровень их разрешения. Их уровень разрешений определяется их членством в группе, и вы, вероятно, используете web.RoleAssignments.GetAssignmentByPrincipal(group)
(GetAssignmentByPrincipal), чтобы получить список назначений (пример: чтение, внесение и т. Д.).
Однако сценарий, вероятно, НЕ того, что имеет ваш клиент. О чем подумать (некоторые из них легче преодолеть, чем другие):
- Что происходит, когда пользователь существует в нескольких группах на одном и том же сайте?
- Пользователи с индивидуальными правами на доступ к сайту?
- Поврежденное наследование разрешения на уровне SPWeb? Как насчет разрешений списков? Разрешения на товар? Что происходит, когда вы видите ограниченный доступ?
- Группы AD используются где угодно? Нужно ли перечислять всех пользователей в каждой группе AD? Как насчет специальных групп, таких как «ВСЕ АУТЕНТИРОВАННЫЕ ПОЛЬЗОВАТЕЛИ»?
Реально, очень сложно написать точный аудит безопасности. Лучшим решением для этого, вероятно, является поиск того, кто знаком с тем, как настроить безопасность для каждого сайта, чтобы исправить их.
Вы ищете список пользователей на сайт или список сайтов для пользователя? – knight0323
Список пользователей на сайт. но разных пользователей. – James123