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