Введение в LDAP
LDAP (Lightweight Directory Access Protocol) - Протокол Доступа к Директориям (каталогам), является протоколом, используемым для доступа к "Серверам Каталогов". Директория является специальной разновидностью базы данных, которая хранит информацию используя древовидную структуру.
Эта концепция аналогична структуре каталога на вашем жестком диске, за исключением того что в данном контексте корневой каталог рассматривается как "весь мир" а подкаталоги первого уровня как "страны". Более низкие уровни структуры директории содержат входы для компаний, организаций или мест, на уровне еще ниже находятся входы каталога для людей, и возможно для оборудования или документов.
Для ссылки на файл в подкаталоге на жестком диске используется нечто подобное
/usr/local/myapp/docs
Прямая косая черта отмечает каждый раздел в ссылке, а вся последовательность символов ссылки читается слева направо.
Эквивалентом полностью определенной ссылки в LDAP является "distinguished name" (различаемое имя), обозначаемое просто как "dn". Примером dn может быть:
cn=John Smith,ou=Accounts,o=My Company,c=US
Каждый раздел такой ссылки отмечается запятой, а вся последовательность читается справа налево. Ссылка читается как ..
country = US organization = My Company organizationalUnit = Accounts commonName = John Smith
Так же как и при организации структуры каталога на жестком диске, в данном способе нет жестких правил по организации структуры, и менеджер сервера директории LDAP допускает любую структуру, подходящую для выбранной цели. Однако имеется ряд соглашений. Суть их в том, что вы не можете написать код доступа к серверу директории, не зная его структуры, так же как вы не можете использовать базу данных без представления о ее предназначении. Пример полной программы
Поиск информации для всех записей, где фамилия начинается с "S", в сервере директории, вывод на дисплей и извлечение с именем и email-адресом.
Пример. Пример поиска в LDAP
<?php // базовая последовательность в LDAP это соединение, связь, // поиск, интерпретация поиска, результат, закрытие соединения
echo "<h3>LDAP тест запроса</h3>"; echo "Соединение ..."; $ds=ldap_connect("localhost"); // должен существовать LDAP-сервер! echo "результат соединения ".$ds."<p>";
if ($ds) { echo "Установка связи ..."; $r=ldap_bind($ds); // это "anonymous" связь, обычно доступ // только для чтения, вывод "Результат связи.." echo "Результат связи ".$r."<p>";
echo "Поиск для (sn=S*) ..."; // Поиск записи с фамилией $sr=ldap_search($ds,"o=My Company, c=US", "sn=S*"); echo "Результат поиска ".$sr."<p>";
echo "Количество возвращенных записей ".ldap_count_entries($ds,$sr)."<p>";
echo "Получение записей ...<p>"; $info = ldap_get_entries($ds, $sr); echo "Данные для ".$info["count"]." объектов возвращены:<p>";
for ($i=0; $i<$info["count"]; $i++) { echo "dn is: ". $info[$i]["dn"] ."<br>"; echo "первая запись cn: ". $info[$i]["cn"][0] ."<br>"; echo "первая запись email: ". $info[$i]["mail"][0] ."<p>"; }
echo "Закрытие соединения"; ldap_close($ds);
} else { echo "<h4>Нет соединения с LDAP сервером</h4>"; } ?>
Использование PHP LDAP вызовов
Вам потребуется установить и скомпилировать библиотеки LDAP-клиента или из пакета University of Michigan ldap-3.3, или из Netscape Directory SDK. Вам также потребуется перекомпилировать PHP с поддержкой LDAP для того чтобы применение PHP LDAP вызовов стало доступным.
Прежде чем использовать LDAP вызовы, необходимо знать ..
Имя или адрес сервера директории, который вы будете использовать
"Базовый dn" сервера (часть "мирового" каталога на данном сервере, которая может быть "o=My Company,c=US") Нужен ли пароль для доступа к данному серверу (многие серверы обеспечивают доступ для чтения для "anonymous связей" но требуют пароля для чего-либо еще)
Типичная последовательность LDAP-вызовов, которую вы можете применять в приложениях, представлена в следующем щаблоне:
ldap_connect() // установка соединения с сервером | ldap_bind() // анонимный или идентифицируемый "вход" | действия подобные поиску или обновлению каталога с выводом результата
| ldap_close() // "выход"
Дополнительная информация
Большое количество информации по LDAP может быть найдено:
Netscape University of Michigan OpenLDAP Project LDAP World
Netscape SDK одержит полезное Руководство Программиста в .html формате.
1 2
8 8 8
| |