在SharePoint中,是否可以通过编程方式获取与;“nt授权/认证用户”;团体?

在SharePoint中,是否可以通过编程方式获取与;“nt授权/认证用户”;团体?,sharepoint,active-directory,Sharepoint,Active Directory,在SharePoint中,我想找出所有被授予网站访问权限的用户 如果用户被直接授予权限、通过SharePoint组授予权限或通过域组授予权限;然后我就能得到必要的信息 但是,如果用户通过“authenticated users”组被授予权限,我不确定如何找到与该组关联的用户列表 这可能吗?这更像是一个.Net问题,而不是Sharepoint问题。是的,您可以这样做-使用AD API查询域控制器中的所有用户列表。下面是一些代码,可以帮助您开始编程式广告访问: 您可以尝试对AD中属于用户的所有对象

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

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

但是,如果用户通过“authenticated users”组被授予权限,我不确定如何找到与该组关联的用户列表


这可能吗?

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

您可以尝试对AD中属于用户的所有对象进行查询


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

Kyle,感谢您的回复

利用这些信息,我想出了以下方法来获取所有域中的所有用户:

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;
}
private List GetAllAuthenticatedUsers()
{
列表用户=新列表();
foreach(GetAllDomains()中的字符串域)
{
尝试
{
PrincipalContext上下文=新PrincipalContext(ContextType.Domain,Domain);
//为所有启用的用户创建搜索条件
PrincipalSearcher=新PrincipalSearcher();
UserPrincipal用户=新的UserPrincipal(上下文);
user.Enabled=true;
user.Name=“*”;
searcher.QueryFilter=用户;
//获取用户
System.DirectoryServices.AccountManagement.PrincipalSearchResult结果=search.FindAll();
foreach(结果中的主要负责人)
{
用户。添加(委托人);
}
}
抓住
{
}
}
返回用户;
}
私有静态列表GetAllDomains()
{
列表域=新列表();
使用(Forest-Forest=Forest.GetCurrentForest())
{
foreach(林中的域。域)
{
domains.Add(domain.Name);
}
}
返回域;
}

该组表示拥有有效凭据的任何人。如果您使用的SP环境使用Active Directory作为其身份验证/授权源,那么它实际上是指目录中任何当前未过期的帐户。