Подстановочный знак поиска LDAP не работает

Я пытаюсь выполнить поиск в своем каталоге LDAP, и мне не удается выполнить поиск с помощью фильтров подстроки, когда значение представляет собой набор атрибутов и значений.

Сценарий: в моем скрипте Python я могу выполнить поиск на сервере LDAP. Поэтому я пропущу код, касающийся соединения, конфигурации DN и прочего, и сосредоточусь на Filter.

Фильтр 1: (работает)

'(&(objectClass=person)(managedObjects=CN=SKSOBHEE-MOBL,OU=Mobile,OU=Production,OU=Windows 7,OU=IT Client,OU=Resources,DC=emea,DC=xx,DC=yy ,DC=com)(objectClass=organizationalPerson)(objectClass=user))'

Фильтр 2: (сбой)

'(&(objectClass=person)(managedObjects=CN=SKSOBHEE-MOBL*)(objectClass=organizationalPerson)(objectClass=user))'

Поиск с помощью Filter1 возвращает пользователя, но не работает с Filter2, когда я использую подстроку.

Поиск осуществляется с помощью:

l.search_s(BASE_DN, SCOPE, Filter1, Attrs)

Буду признателен за помощь в этом!

Спасибо.


person Shailen    schedule 13.11.2013    source источник
comment
Это подстрока, а не подстановочный знак. Фильтры LDAP не используют подстановочные знаки. Есть ли у managedObjects правило сопоставления подстрок? Большинство атрибутов синтаксиса DN не используют правило подстроки при сопоставлении DN.   -  person Terry Gardner    schedule 13.11.2013
comment
Спасибо за ответ. Как узнать, есть ли у атрибута правило сопоставления? Я использую LDAP Admin for Windows, чтобы визуально увидеть дерево.   -  person Shailen    schedule 13.11.2013
comment
Определение синтаксиса атрибута для managedObjects должно содержать синтаксис атрибута и все правила сопоставления и упорядочения. Если нет правила сопоставления подстрок, то подстроки не будут работать в фильтре.   -  person Terry Gardner    schedule 13.11.2013
comment
Используя средство просмотра схемы администратора LDAP, я получил подробную информацию об атрибуте managedObjects. Ссылка: s14.postimg.org/utfu3swip/pscreen.png . Я вижу, что субатрибут Substring пуст. Это причина, по которой я не могу использовать подстановочные знаки?   -  person Shailen    schedule 13.11.2013
comment
Если я понимаю это изображение, да, это ответ на ваш вопрос. Для фильтров на равенство должно быть совпадение на равенство, для фильтров подстрок — совпадение подстроки и т. д. В данном случае это substring.   -  person Terry Gardner    schedule 13.11.2013
comment
Этот вопрос не следует откладывать на потом: ответ — важная часть ежедневной работы с LDAP.   -  person Terry Gardner    schedule 13.11.2013


Ответы (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' )

Если правило сопоставления не включено для типа фильтра, поиск не будет работать, как вы думаете.

смотрите также

person Terry Gardner    schedule 13.11.2013