Получить только пользователей, которые принадлежат к определенной группе - PullRequest
1 голос
/ 06 октября 2011

Я пытаюсь понять 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);

        }
    }
}

1 Ответ

1 голос
/ 06 октября 2011

Я сделал это таким образом, где он проверяет имя пользователя, если оно в 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;


    }

Для проверки нескольких пользователей это должно работать для вас Получение пользователей из SecurityGroup или это метод GroupPrincipal.GetMembers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...