Предположим, что я хочу найти число, скажем, 123
, а в LDAP есть такие записи, как 123#
или 1-2-3
. Каким должен быть поисковый фильтр LDAP, который необходимо предоставить? Я пробовал *123*
, но это не работает в случае 1-2-3
.
Относительно поискового запроса LDAP
Ответы (1)
LDAP не имеет «записей типа 123#», в нем есть записи, идентифицируемые отличительными именами, которые содержат атрибуты. Чтобы найти запись, содержащую значение, необходимо указать в поисковом запросе следующие параметры:
- базовый объект (отличительное имя, с которого должен начинаться поиск)
- область видимости - базовая, на один уровень подчиненная базе, или поддерево (все записи подчинены базовому объекту
- filter - утверждение, которое должно быть истинным, чтобы запись была возвращена клиенту.
- возвращаемые атрибуты — список атрибутов, которые требуются клиенту LDAP.
Если рассматриваемый атрибут называется number
и имеет синтаксис Integer и правило сопоставления IntegerMatch, то фильтр (number=123)
найдет атрибут с именем number
с целочисленным значением 123
. Какой фильтр использовать, зависит от синтаксиса и правила сопоставления в определении типа атрибута, поскольку сервер каталогов выполняет задачу сопоставления значений атрибута с предоставленными фильтрами с правилами сопоставления (как и приложения, кстати). Программисты не должны рассматривать значения атрибутов LDAP как «строки», вместо этого они должны понимать синтаксис атрибутов и правила сопоставления. Существует синтаксис DirectoryString
(с очень специфическим определением, хотя для многих целей его можно рассматривать как стандартную строку), но не все атрибуты определены с синтаксисом DirectoryString
. Также не все атрибуты используют одни и те же правила сопоставления и правила упорядочения.