Возможно ли LDAP-запрос пользователей, общих для набора групп? - PullRequest
2 голосов
/ 07 мая 2009

Мне нужен список всех пользователей, общих для известной коллекции групп, с использованием одного запроса LDAP нашей Active Directory. Из нашего прочтения покажется, что это невозможно, но я подумал, что лучше всего спросить улей.

Ответы [ 3 ]

2 голосов
/ 07 мая 2009

Попробуйте это:

(&(objectCategory=Person)
    (&
        (memberOf=CN=group1,dc=company,dc=local)
        (memberOf=CN=group2,dc=company,dc=local)
        (memberOf=CN=group3,dc=company,dc=local)
    )
)

Это похоже на мой вопрос , за исключением того, что я хотел, чтобы все пользователи НЕ были членами групп. Вам нужно будет удалить все пробелы для работы большинства инструментов запросов.

1 голос
/ 27 мая 2009

Да, это возможно с помощью запроса в области атрибута. Требуется W2K3 AD или более поздняя версия, но вам будут предоставлены все пользователи с определенным атрибутом, т. Е. Членство в группе или в вашем случае несколько групп (пересечение групп). Один из лучших примеров - из книги Джо Каплана и Райана Даннса «Руководство разработчика по .NET по программированию служб каталогов» для работы с AD. Трудно превзойти страницу 179, чтобы хорошо разобраться.

Предостережение : на этом этапе вы проходите тривиальные поиски в AD, и становится важным ряд вещей, таких как корень поиска, область действия и эффект поиска в некотором потенциально огромном наборе данных для элементов ты хочешь. Просмотр 50 или 60 тысяч пользователей на предмет поиска членов группы действительно влияет на производительность и готовность делать постраничные результаты или подобное в случае большого набора данных. Каплан / Райан отлично справляются с работой, чтобы доставить вас туда, куда вам нужно. Тем не менее, я использовал их в двух проектах AD с большим успехом. Возможность извлечения данных из AD без рекурсивных запросов ОЧЕНЬ стоит, и я обнаружил, что это быстро, пока я контролирую размер своего набора данных.

0 голосов
/ 07 мая 2009

Невозможно в одном запросе, если ваши группы содержат вложенные группы.

Вам потребуется написать некоторый код, который рекурсивно разрешает членов группы и выполняет логический эквивалент «внутреннего объединения» результатов, создавая список пользователей, общих для всех исходных групп.

...