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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 27 апреля 2011

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

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

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

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

0 голосов
/ 29 апреля 2011

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

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

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...