2013-06-12 2 views
0

Я хочу проверить, существует ли данное DN в каталоге LDAP, используя Perl и Net::LDAP. Итак, я решил сделать что-то вроде этого:Как выполнить поиск по DN с помощью Net :: LDAP

my $dn = 'uid=foo,ou=bar,ou=baz'; 
$ldap->search(base => $dn, scope => 'base', attrs => ['dn']); 

Однако, что приводит к ошибке Bad filter. Я могу заставить его работать, добавив filter => '(objectClass=*)', но это кажется немного klugey.

Это как я должен это делать, или я что-то пропустил? Я новичок в Net :: LDAP.

+0

Почему это «kludgey»? Клиенты LDAP должны предоставлять действительный фильтр для запроса поиска. –

+0

@TerryGardner Я думаю, это было бы сказать, что это должно быть так. Но, например, с помощью инструмента командной строки OpenLAP 'ldapsearch', вам не нужно указывать фильтр (по умолчанию он для вас). И похоже, что сообщение об ошибке скажет что-то о необходимости фильтра, если это так. – derobert

+0

Какой фильтр действительно передается серверу в запросе на поиск, если вы не предоставляете фильтр в своем коде? –

ответ

2

Клиент LDAP должен предоставить действительный фильтр поиска для поискового запроса. Попробуйте использовать фильтр (&). Обратите внимание, что некоторые сломанные серверы каталогов не принимают законный фильтр (&). Если ваш сервер разбит таким образом, используйте вместо этого фильтр (objectClass=*).