Почему этот код не ограничен OU? - PullRequest
0 голосов
/ 29 февраля 2012

Я пытаюсь запросить Active Directory, чтобы получить список пользователей в моем приложении asp.net/C#.

У меня есть этот код:

    adProvider = "LDAP";
    adPath = "DC00.Domain.prv/OU=Sub,OU=Users,OU=Test,DC=Domain,DC=prv";
    entry = new DirectoryEntry(string.Format("{0}://{1}", adProvider, adPath),"AD","ThePwd"); 
    DirectorySearcher searcher1 = new DirectorySearcher(entry);


    searcher1 = new DirectorySearcher("objectClass=user");

    SearchResultCollection results1;
    results1 = searcher1.FindAll();
    var list = new List<string>();
    for (int i = 0; i < results1.Count; i++)
    {

        list.Add(results1[i].Properties["cn"][0].ToString());
    }
    return list;

Работаетпотому что я получаю список из 1000 «общих имен» от пользователей, но .. На самом деле у Test/Users/Sub OU есть только один пользователь .. Кажется, запрос ищет пользователей во всем диапазоне AD ..

Что не так?

Спасибо за помощь

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

возможно я ошибаюсь, но вы дважды перезаписываете переменную searcher1:

Эта вторая перезапись бесполезна, если вы хотите использовать первую ...

searcher1 = new DirectorySearcher("objectClass=user");
1 голос
/ 29 февраля 2012

Будьте осторожны, используя фильтр "objectClass=user", вы собираетесь собирать пользователей и компьютеры, которые лучше использовать:

(&(objectCategory=person)(objectClass=user))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...