Фильтры для поиска в LDAP
Полное описание конструирования фильтров для поиска в дереве каталогов LDAPv3 можно найти в .
Фильтр имеет формат префиксной нотации (или польской ?). Очень широко практикуется рекурсия.
Итак. Тело фильтра должно быть заключено в скобки:
"(" элемент_сравнения «)»
Элементы сравнения конструируются так:
- И — «&» список_фильтров
- ИЛИ — «|» список_фильтров
- НЕТ — «!» элемент
- Элемент
Список фильтров — это список из рекурсивно записанных фильтров.
Элементы могут быть четырех типов: 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) описан в .
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%
Похожие заметки
Squid и LDAP-аутентификация из Active DirectoryАутентификация в Apache из LDAP
Aутентификация Squid+Kerberos c LDAP авторизацией в Active Directory
Roman Shramko