В SharePoint возможно ли программно получить текущий список пользователей, связанных с группой «nt authority / аутентифицированные пользователи»?

#sharepoint #active-directory

#sharepoint #active-directory

Вопрос:

В SharePoint я хотел бы узнать всех пользователей, которым был предоставлен доступ к сайту.

Если пользователю напрямую предоставлены разрешения, предоставлены разрешения через группу SharePoint или предоставлены разрешения через группу домена; тогда я могу получить необходимую информацию.

Однако, если пользователю предоставлены разрешения через группу «аутентифицированные пользователи», я не уверен, как найти список пользователей, связанных с этой группой.

Возможно ли это?

Ответ №1:

Это скорее .Чистый вопрос, чем вопрос Sharepoint. Да, вы можете это сделать — используйте AD API для запроса списка всех пользователей к вашему контроллеру домена. Вот некоторый код, который поможет вам начать работу с программным доступом к AD:

http://www.codeproject.com/KB/system/everythingInAD.aspx

Вы могли бы попробовать выполнить запрос для всех объектов в AD, которые являются пользователями.

Пожалуйста, обратите внимание, что при этом не будут перечислены какие-либо пользователи за пределами AD, которые могли бы иметь доступ к содержимому Sharepoint. Кроме того, если у вас несколько доменов, обязательно запросите все домены AD, которые могут иметь доступ к серверу Sharepoint.

Ответ №2:

Кайл, спасибо за ответ.

Используя эту информацию, я придумал следующее, чтобы получить всех пользователей во всех доменах:

 private List<Principal> GetAllAuthenticatedUsers()
{
    List<Principal> users = new List<string>();
    foreach (string domain in GetAllDomains())
    {
        try
        {
            PrincipalContext context = new PrincipalContext(ContextType.Domain, domain);

            // Create search condition for all enabled users
            PrincipalSearcher searcher = new PrincipalSearcher();
            UserPrincipal user = new UserPrincipal(context);
            user.Enabled = true;
            user.Name = "*";
            searcher.QueryFilter = user;

            // Get the users
            System.DirectoryServices.AccountManagement.PrincipalSearchResult<Principal> results = searcher.FindAll();
            foreach (Principal principal in results)
            {
                users.Add(principal);
            }
        }
        catch
        {
        }
    }

    return users;

}

private static List<string> GetAllDomains()
{
    List<string> domains = new List<string>();
    using (Forest forest = Forest.GetCurrentForest())
    {
        foreach (Domain domain in forest.Domains)
        {
            domains.Add(domain.Name);
        }
    }

    return domains;
}
  

Комментарии:

1. Эта группа означает любого, у кого есть действительные учетные данные. Если вы работаете со средой SP, которая использует Active Directory в качестве источника аутентификации / авторизации, то это буквально означает любую текущую учетную запись с истекшим сроком действия в каталоге.