只获取属于特定组的用户

本文关键字:用户 获取 属于 | 更新日期: 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方法