在SharePoint中,我想找出所有被授予访问权限的用户。
如果直接授予用户权限,通过SharePoint组授予权限或通过域组授予权限;然后我就能得到必要的信息。
但是,如果通过“经过身份验证的用户”组授予用户权限,我不确定如何查找与该组关联的用户列表。
这可能吗?
答案 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;
}