只获取属于特定组的用户
本文关键字:用户 获取 属于 | 更新日期: 2023-09-27 18:10:41
我试图尽快理解Active Directory,但到目前为止我还不是很成功。我有这段代码,返回所有用户从AD别人写的,我应该改变它,使它只返回用户为指定组。我试着多学习一些关于AD的知识,希望解决方案会自己出现,但到目前为止还没有运气。也许有人能帮帮我?这是我的代码。
adSearch.Filter = "(&(objectClass=user))";
string groupName = System.Configuration.ConfigurationManager.AppSettings["ADGroupName"];
string domain = adSearch.SearchRoot.Properties["dc"].Value.ToString();
DomainLabel.Text = domain + " accounts:";
foreach (SearchResult sResultSet in adSearch.FindAll())
{
if (!GetProperty(sResultSet, "givenName").Equals("") && !GetProperty(sResultSet, "sn").Equals(""))
{
string userAccountControl = GetProperty(sResultSet, "useraccountcontrol");
bool x = userAccountControl.Equals("512") || userAccountControl.Equals("66048");
if (x)
{
ListItem tempItem = new ListItem();
unsortedList.Add(GetProperty(sResultSet, "givenName") + " " + GetProperty(sResultSet, "sn"));
tempItem.Text = GetProperty(sResultSet, "givenName") + " " + GetProperty(sResultSet, "sn");
tempItem.Value = GetProperty(sResultSet, "sAMAccountName");
values.Add(tempItem);
}
}
}
我已经这样做了,它检查用户名是否在SecurityGroup中。您可以在ActiveDirectory中获取用户,然后像这样检查
public bool IsInSecurityGroup(string UserName)
{
bool _isInsecurityGroup;
string GroupName ="GroupName";
System.Security.Principal.WindowsIdentity MyIdentity =
System.Security.Principal.WindowsIdentity.GetCurrent();
System.Security.Principal.WindowsPrincipal MyPrincipal = new
System.Security.Principal.WindowsPrincipal(MyIdentity);
return (MyPrincipal.IsInRole(GroupName)) ? true : false;
}
对于检查多个用户,它应该适用于从安全组获取用户或者这个GroupPrincipal。GetMembers方法