Синтаксис корневого запроса LDAP для поиска более чем в одном конкретном OU

Я необходимо выполнить один запрос LDAP, который будет выполнять поиск по двум конкретным организационным единицам (OU) в корневом запросе, однако мне это нелегко. Я пробовал следующие запросы ниже, и ни один из них не увенчался успехом:

(|(OU=Staff,DC=my,DC=super,DC=org)(OU=Vendors,DC=my,DC=super,DC=org))

((OU=Staff,DC=my,DC=super,DC=org) | (OU=Vendors,DC=my,DC=super,DC=org))

My вопрос в том, можно ли запросить более одного OU в одном запросе? Предполагая, что это правильный синтаксис для этого типа выражения в корневом запросе LDAP.

25
задан James 7 February 2012 в 23:18
поделиться

2 ответа

Я не думаю, что это возможно с нашей эры. Единственное, что я знаю, - это отличительный атрибут, который содержит фрагмент OU, в котором вы пытаетесь выполнить поиск, поэтому вам понадобится подстановочный знак, чтобы получить результаты для объектов в этих подразделениях. К сожалению, подстановочный знак не поддерживается в DN.

Если это вообще возможно, я бы действительно посмотрел на это в двух запросах, используя OU = Staff ... и OU = Vendors ... в качестве базовых DN.

2
ответ дан 28 November 2019 в 21:08
поделиться

Ответ НЕТ, ты не можешь. Почему?

Поскольку стандарт LDAP описывает LDAP-SEARCH как вид функции с 4 параметрами:

  1. Узел, с которого должен начинаться поиск, который является отличительным именем (DN)
  2. Атрибуты, которые вы хотите вернуть
  3. Глубина поиска (базовая, одноуровневая, поддерево)
  4. Фильтр

Вы заинтересованы в фильтре. У вас есть резюме здесь (оно предоставлено Microsoft для Active Directory, оно стандартно). Фильтр логическим образом состоит из выражения типа Attribute Operator Value.

Так что фильтр, который вы даете, ничего не значит.

С теоретической точки зрения существует ExtensibleMatch , который позволяет создавать фильтры buildind на пути DN, но он не поддерживается Active Directory.

Насколько я знаю, вы должны использовать атрибут в AD, чтобы различать пользователей в двух подразделениях.

Это может быть любой существующий атрибут дискриминатора или, например, атрибут с именем OU, который унаследован от класса organizationalPerson. Вы можете установить его (оно не является автоматическим и не будет поддерживаться при перемещении пользователей) с помощью «персонала» для одних пользователей и «поставщиков» для других, и они используют фильтр:

(&(objectCategory=person)(|(ou=staff)(ou=vendors)))
15
ответ дан 28 November 2019 в 21:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: