Проблема глубины поиска запросов LDAP - PullRequest
0 голосов
/ 26 января 2011

Я пытаюсь создать телефонный справочник, извлекая имена OU и номера телефонов из AD.При поиске, чтобы увидеть, заполнено ли поле телефона в текущем OU, и что в OU есть дочерний OU, который также содержит поле телефона, эти учетные записи пользователей также возвращаются.Например:

США

--- Техас

--- Флорида

--- Нью-Йорк

Япытаясь найти всех пользователей, у которых заполнено поле телефона в OU США, но возвращаются пользователи из Техаса, Флориды и Нью-Йорка.Есть ли способ ограничить глубину поиска LDAP?

Я использую c # и мой текущий фильтр для поиска пользователей просто

(& (objectClass = user) (objectCategory = person))

Любая помощь будет принята с благодарностью!

1 Ответ

3 голосов
/ 27 января 2011

Я предполагаю, что вы используете DirectorySearcher для выполнения запроса LDAP.Вы можете ограничить свой поиск на уровне OU США, установив DirectorySearcher.SearchScope на SearchScope.OneLevel.

Вот пример, который может выглядеть как

IEnumerable<DirectoryEntry> FindUsers(DirectoryEntry root)
{
    using (DirectorySearcher searcher = new DirectorySearcher(root))
    {
        searcher.Filter = "(&(objectClass=user)(objectCategory=person))";
        searcher.SearchScope = SearchScope.OneLevel;
        searcher.PageSize = 1000;
        foreach (SearchResult result in searcher.FindAll())
        {
            yield return result.GetDirectoryEntry();
        }
    }
}
...