Dormestmass: Админ — это состояние души

Фильтры для поиска в LDAP

Полное описание конструирования фильтров для поиска в дереве каталогов LDAPv3 можно найти в RFC 2254.

Фильтр имеет формат префиксной нотации (или польской ?). Очень широко практикуется рекурсия.
Итак. Тело фильтра должно быть заключено в скобки:

"(" элемент_сравнения «)»

Элементы сравнения конструируются так:

  • И — «&» список_фильтров
  • ИЛИ — «|» список_фильтров
  • НЕТ — «!» элемент
  • Элемент

Список фильтров — это список из рекурсивно записанных фильтров.

Элементы могут быть четырех типов: simple, present, substring и extensible.

Элемент simple конструируется следующим образом:

атрибут операция значение

В значениях можно использовать символ «*», который заменяет любое количество символов.
Операции, применяемые бывают следующими: равно («=»), приблизительно («~=»), больше («>=») и меньше («<=»).

Например. Выбрать записи, у которых атрибут cn равен Roman Shramko:

(cn=Roman Shramko)

Записи, для которых атрибут cn не равен Roman Shramko:

(!(cn=Roman Shramko)

Записи, тип которых GroupOfUniqueNames(группа) и в которые входит RShramko (атрибут uniquemember):

(&(ObjectClass=GroupOfUniqueNames)(uniquemember=uid=RShramko,ou=Employee,ou=Org, o=com))

Элемент present конструируется так:

атрибут «=*»

Этот элемент является подмножеством элементов simple. Данный элемент используется для отбора записей, у которых присутствует определённый атрибут. Это наиболее используемый тип элементов.

Например. Отобрать группы (тип записи GroupOfUniqueNames) в которых имеются члены (атрибут uniquemember):

(uniquemember=*)

Элемент substring конструируется следующим образом:>

атрибут «=»
начальное_значение «*» конечное_значение

Этот тип элементов так же является подмножеством элементов типа simple и служит для отбора по подстрокам.
Например, нам нужно отобрать пользователей, у которых имя (атрибут cn) начинается на R и заканчивается на ko:

(cn=R*ko)

Элемент extensible конструируется так:

атрибут [:"dn"] [":" идентификатор_поиска ] «:=»
значение

либо так:

атрибут [:"dn"] «:» идентификатор_поиска «:=»
значение

Идентификатор поиска (Matching Rule Identifier) описан в RFC 2251.

A matching rule is a means of expressing how a server should compare an AssertionValue received in a search filter with an abstract data value.

Честно говоря, я не нашёл в своей практической работе задач, для которых была бы необходима форма элементов extensible.

Пример:

(cn:1.2.3.4.5:=Fred Flintstone)
(sn:dn:2.4.6.8.10:=Barney Rubble)
(o:dn:=Ace Industry)
(:dn:2.4.6.8.10:=Dino)

Фильтр:

(&(objectClass=group)(|(ou:dn:=Chicago)(ou:dn:=Miami)))

найдет группы, у которых в DN компонент OU содержит либо Chicago, либо Miami.

Популярность: 7%

Вы можете следить за обсуждением с помощью RSS 2.0 ленты.