LDAP
LDAP (Lightweight Directory Access Protocol - облегчённый протокол доступа к каталогам) - это сетевой протокол для доступа к службе каталогов. По сути это базы данных, хранящие в себе информацию о пользователях, узлах и объектах сети. Цель их создания - упростить администрирование. LDAP - простой протокол, использующий TCP/IP. Он позволяет компоновать (bind), искать (search) и сравнивать (compare) записи, а также производить операции добавления, изменения или удаления. Обычно LDAP-сервер принимает входящие соединения на порт 389 по протоколам TCP или UDP. Для LDAP-сеансов, инкапсулированных в SSL, обычно используется порт 636.
Содержание |
Обзор протокола
Сессия LDAP начинается с того, что клиент подсоединяется к LDAP-серверу - по умолчанию это ТСР порт 389. клиент отправляет запрос на операцию, после чего получает ответ с сервера. В большинстве случаев клиент не должен ждать ответ перед отправкой следующего запроса, сервер же посылает ответы в произвольном порядке.
Запрос на операции
- Старт TLS (Transport Layer Security) используя расширение LDAPv3 для обеспечения надёжного соединения.
- Аутентификация и указание версии протокола LDAP.
- Поиск записей в каталоге.
- Сравнение содержит ли запись искомый атрибут.
- Добавление новой записи.
- Удаление записи.
- Модификация записи.
- Модификация отличительного имени (Distinguished Name, DN) - перемещение или переименование записи
- Отмена предыдущего запроса.
- Расширенные операции
- Закрытие соединения.
Кроме того, сервер может послать не запрошенное уведомление, которое не является ответом на запрос. Например, прежде чем разорвать соединение.
Структура
Протокол доступа к каталогам LDAP соответствует модели X.500, принятой в качестве стандарта в 1993 году:
- Каталог представляет собой дерево каталогов записей.
- Запись состоит из набора атрибутов.
- Атрибут имеет имя (атрибут типа или атрибут описания) и одно или несколько значений.
- Каждая запись имеет уникальный идентификатор - отличительное имя (Distinguished Name, DN). Которое состоит из относительного отличительного имени (Relative Distinguished Name, RDN) составленное из атрибута(ов) записи, за которым следует родительская запись отличительного имени. То есть DN является полным именем файла, а RDN относительное имя в папке.
Имейте ввиду, что DN может меняться в течение существования записи. На пример, когда запись перемещается внутри дерева каталога. Чтобы надёжно и однозначно определить позиции записи в набор её оперативных атрибутов может быть включён UUID.ИТ-директор «Роснефти» Дмитрий Ломилин выступит на TAdviser SummIT 28 ноября
В LDAP запись может выглядеть примерно так:
dn: cn=Иван Иванов,dc=example,dc=com cn: Иван Иванов givenName: Иван sn: Иванов telephoneNumber: +1 888 555 6789 telephoneNumber: +1 888 555 1232 mail: ivan@example.com manager: cn=Ася Александрова, dc=example,dc=com objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top
Здесь: dn - это имя записи, которое не является не атрибутом, не частью записи. "cn=Иван Иванов" - это RDN записи, a "dc=example,dc=com" - DN родительской записи, в которой dc обозначает доменный компонент. В остальных строках показаны атрибуты записи.
Сервер хранит подкаталог (subtree) начиная с конкретной записи, например, "dc=example,dc=com" и её расширения. На сервере также могут храниться ссылки на другие серверы, таким образом, попытка найти "ou=department,dc=example,dc=com" может вернуть предложение или постоянную ссылку на сервер, который хранит эту часть папки каталога. Клиент может подсоединиться к этому серверу. Некоторые серверы объединены в цепи, то есть отдельный сервер связывается с другим сервером и возвращает результат клиенту.
Операции
Клиент предоставляет каждому запросу положительный идентификатор сообщения, и ответ сервера имеет тот же идентификатор сообщения. Ответ включает в себя результирующий числовой код, который может быть успешным, указывать на ошибки или предоставлять другие данные. Перед ответом сервер может отправить другие сообщения с другими результирующими данными - например, в этом сообщении могут быть отправлены все записи, найденные во время операции поиска.
Протокол LDAP определён в следующих RFC:
- RFC 4510 — Lightweight Directory Access Protocol (LDAP) Technical Specification Roadmap (заменяет RFC 3377)
- RFC 4511 — Lightweight Directory Access Protocol (LDAP): The Protocol
- RFC 4512 — Lightweight Directory Access Protocol (LDAP): Directory Information Models
- RFC 4513 — Lightweight Directory Access Protocol (LDAP): Authentication Methods and Security Mechanisms
- RFC 4514 — Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names
- RFC 4515 — Lightweight Directory Access Protocol (LDAP): String Representation of Search Filters
- RFC 4516 — Lightweight Directory Access Protocol (LDAP): Uniform Resource Locator
- RFC 4517 — Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules
- RFC 4518 — Lightweight Directory Access Protocol (LDAP): Internationalized String Preparation
- RFC 4519 — Lightweight Directory Access Protocol (LDAP): Schema for User Applications
- RFC 4520 (aka BCP 64) — Internet Assigned Numbers Authority (IANA) Considerations for the Lightweight Directory Access Protocol (LDAP) (заменяет RFC 3383)
- RFC 4521 (aka BCP 118) — Considerations for Lightweight Directory Access Protocol (LDAP) Extension
Серверная часть
LDAP является одним из самых распространённых стандартов доступа к службам каталогов. Из свободно распространяемых открытых реализаций наиболее популярен сервер OpenLDAP, из платных служб каталогов, которые поддерживают протокол, можно выделить Active Directory от компании Microsoft, предназначенной для централизации управления сетями Windows. Свои реализации служб каталогов, поддерживающие LDAP как протокол доступа, предлагают и другие крупные компании, например, Novell и Sun.
Клиентская часть
В качестве клиентов LDAP выступают как адресные книги почтовых клиентов, так и back-end'ы различных сетевых служб (серверы DNS, SMTP, Samba, UTS и т. д.). LDAP также получила широкую поддержку со стороны таких компаний, как:
- Apache (на основе сервера каталогов Apache)
- Apple (на основе Open Directory / OpenLDAP)
- AT & T
- Banyan
- HP
- IBM / Lotus
- ISODE (через М-Vault-сервер)
- Microsoft (с помощью Active Directory)
- Netscape (в настоящее время в продуктах от Sun Microsystems и Red Hat)
- Novell (через eDirectory)
- OctetString (через сервер VDE)
- Oracle (на основе Oracle Internet Directory)
- Radiant Logic (через RadiantOne Virtual Directory Server)
- Red Hat (через сервер каталоговRed Hat)
- SiemensAG (через DirX сервер)
- SGI
- Sun (через сервер каталогов iPlanet и Sun ONE)
- Symlabs (через каталог Extender)
А также в реализациях с открытым исходным кодом и в бесплатном программном обеспечении, таком, как OpenLDAP и Fedora сервер каталог. Apache HTTP Server, используемый в качестве прокси-сервера (с модулем mod_proxy) также поддерживает LDAP.