Подстановочный знак поиска LDAP не работает
Я пытаюсь выполнить поиск в своем каталоге LDAP и не могу выполнить поиск с помощью фильтров подстрок, когда значение представляет собой набор атрибутов и значений.
Сценарий: в моем скрипте Python я могу искать на сервере LDAP. Поэтому я опущу код, касающийся соединения, конфигурации DN среди других, и сосредоточусь на Filter
,
Фильтр1: (работает)
'(& (objectClass = person) (managedObjects = CN = SKSOBHEE-MOBL,OU= Mobile,OU= Production,OU= Windows 7,OU= IT-клиент,OU= Ресурсы,DC=emea,DC=xx,DC=yy,DC= COM) (объектный =organizationalPerson)(объектный = пользователь))
Filter2: (не работает)
'(& (Объектный = человек)(managedObjects=CN=SKSOBHEE-MOBL*)(объектный =organizationalPerson)(объектный = пользователь))'
Поиск с помощью Filter1 возвращает пользователя, но завершается неудачно с Filter2, когда я использую подстроку.
Поиск осуществляется с помощью:
l.search_s (BASE_DN, SCOPE, Filter1, Attrs)
Я был бы признателен за помощь в этом!
Спасибо.
1 ответ
Вместо подстановочного знака используйте подстроку при запросе об этих типах фильтров.
Когда substring
фильтр используется, substring
Правило соответствия должно быть определено для атрибута, используемого в фильтре. За equality
фильтры, должен быть equality
матч, для substring
фильтры, substring
матч и т. д.
Вот пример определения атрибута name
с равенством и правилом подстроки:
attributeTypes: ( 2.5.4.41 NAME 'name' EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768}
X-ORIGIN 'RFC 4519' )
Если правило соответствия не включено для типа фильтра, поиск не будет работать, как вы думаете.