Perl для системного администрирования

Выполнение поиска в LDAP



Выполнение поиска в LDAP

Буква «D» в LDAP означает Directory (т. е. каталог), и наиболее распространенной операцией с каталогами является поиск. Для начала знакомства с LDAP неплохо выяснить, как искать информацию. Поиск в LDAP определяется такими понятиями:

Откуда начинать поиск

Это называется базовым относительным именем (base DN) или базой поиска (search base). Базовое DN-имя представляет собой всего лишь DN-имя элемента в дереве каталогов, от которого начинается поиск.

Где искать

Это называется пространством (scope) поиска. Пространство может быть трех видов: base (поиск только по базовому DN-имени), one (поиск по уровню, лежащему непосредственно под базовым DN-
именем, не включая само базовое DN-имя) или sub (поиск по базовому DN-имени и всему дереву, лежащему ниже).

Что искать

Это называется фильтрами поиска (search filter). О фильтрах и их определении мы поговорим очень скоро.

Что возвращать

С целью ускорения операций поиска можно выбрать, какие атрибуты должны возвращаться для каждого элемента, найденного при помощи фильтров поиска. Кроме того, можно запросить, чтобы возвращались только имена атрибутов, а не их значения. Это полезно, когда нужно узнать, у каких элементов есть данные атрибуты, но совсем не важно, что эти атрибуты содержат.

В Perl поиск выглядит примерно так (процесс соединения заменен многоточиями):

use Mozilla::LDAP::Conn;

Sentry = $c->search($basedn, Sscope, $fiiter)

die "Неуспешный поиск: ". $c->getErrorString()."\n" if $c->getErrorCode():

или:

use Net::LDAP;

Ssearchobj = $c->search(base => Sbasedn, scope => $scope.

filter => $filter);

die "Неуспешный поиск, номер ошибки #".

Ssearchobj->code() if Sseatchooj- >code();

Перед тем как перейти к полному примеру, поговорим о загадочном параметре $fliter. Простые фильтры поиска имеют следующий вид:

<attribute name> Comparison operator> ottribute value>

где <comparison operator> определяется в RFC2254 как один из операторов, перечисленных в табл. 6.2.



Содержание раздела