在SharePoint中,是否可以以编程方式获取与“nt authority / authenticated users”组关联的当前用户列表?

时间:2011-04-27 02:09:44

标签: sharepoint active-directory

在SharePoint中,我想找出所有被授予访问权限的用户。

如果直接授予用户权限,通过SharePoint组授予权限或通过域组授予权限;然后我就能得到必要的信息。

但是,如果通过“经过身份验证的用户”组授予用户权限,我不确定如何查找与该组关联的用户列表。

这可能吗?

2 个答案:

答案 0 :(得分:2)

这更像是一个.Net问题,而不是一个Sharepoint问题。是的,您可以这样做 - 使用AD API查询域控制器以获取所有用户的列表。以下是一些代码,可帮助您开始使用程序化AD访问:

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

您可以尝试对AD中作为用户的所有对象进行查询。

请注意,这不会列出AD之外可能有权访问Sharepoint内容的任何用户。此外,如果您有多个域,请务必查询可能有权访问Sharepoint服务器的所有AD域。

答案 1 :(得分:0)

凯尔,谢谢你的回应。

使用该信息,我想出了以下内容以获取所有域中的所有用户:

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;
}