LDAP | это... Что такое LDAP? (original) (raw)
LDAP (англ. Lightweight Directory Access Protocol — «облегчённый протокол доступа к каталогам») — протокол прикладного уровня для доступа к службе каталогов X.500, разработанный IETF как облегчённый вариант разработанного ITU-T протокола DAP. LDAP — относительно простой протокол, использующий TCP/IP и позволяющий производить операции авторизации (bind), поиска (search) и сравнения (compare), а также операции добавления, изменения или удаления записей. Обычно LDAP-сервер принимает входящие соединения на порт 389 по протоколам TCP или UDP. Для LDAP-сеансов, инкапсулированных в SSL, обычно используется порт 636.
Всякая запись в каталоге LDAP состоит из одного или нескольких атрибутов и обладает уникальным именем (DN — англ. Distinguished Name). Уникальное имя может выглядеть, например, следующим образом: «cn=Иван Петров, ou=Сотрудники, dc=example, dc=com»[1]. Уникальное имя состоит из одного или нескольких относительных уникальных имен (RDN — англ. Relative Distinguished Name), разделённых запятой. Относительное уникальное имя имеет вид ИмяАтрибута=значение. На одном уровне каталога не может существовать двух записей с одинаковыми относительными уникальными именами. В силу такой структуры уникального имени записи в каталоге LDAP можно легко представить в виде дерева.
Запись может состоять только из тех атрибутов, которые определены в описании класса записи (object class), которые, в свою очередь, объединены в схемы (schema). В схеме определено, какие атрибуты являются для данного класса обязательными, а какие — необязательными. Также схема определяет тип и правила сравнения атрибутов. Каждый атрибут записи может хранить несколько значений.
Содержание
Стандарты
Протокол 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 определены следующие операции для работы с Каталогом:
- Операции подключения/отключения
- Подключение (bind) — позволяет ассоциировать клиента с определённым объектом Каталога (фактическим или виртуальным) для осуществления контроля доступа для всех прочих операций чтения/записи. Для того, чтобы работать с Каталогом, клиент обязан пройти аутентификацию как объект, отличительное имя (Distinguished Name) находится в пространстве имён, описываемом Каталогом. В запросе операции bind клиент может не указывать отличительное имя, в таком случае будет осуществлено подключение под специальным псевдонимом anonymous (обычно это что-то наподобие гостевой учетной записи с минимальными правами)
- Отключение (unbind) — позволяет клиенту в рамках сеанса соединения с LDAP-сервером переключиться на аутентификацию с новым отличительным именем. Команда unbind возможна только после аутентификации на сервере с использованием bind, в противном случае вызов unbind возвращает ошибку
- Поиск (search) — чтение данных из Каталога. Операция сложная, на вход принимает множество параметров, среди которых основными являются:
- База поиска (baseDN) — ветка DIT, от которой начинается поиск данных
- Глубина поиска (scope) — может иметь значения (в порядке увеличения охватываемой области): base, one, sub
* base — поиск непосредственно в узле — базе поиска
* one — поиск по всем узлам, являющимся прямыми потомками базового в иерархии, то есть лежащим на один уровень ниже него
* sub — поиск по всей области, нижележащей относительно базы поиска (baseDN) - Фильтр поиска (searchFilter) — это выражение, определяющее критерии отбора объектов каталога, попадающих в область поиска, задаваемую параметром scope. Выражение фильтра поиска записывается в польской (префиксной) нотации, состоящей из логических (булевых) операторов и операндов, в свою очередь являющихся внутренними операторами сопоставления значений атрибутов LDAP (в левой части) с выражениями (в правой части) с использованием знака равенства.
Логические операторы представлены стандартным «набором»: & (логическое «И»), | (логическое «ИЛИ») и ! (логическое «НЕ»).
Пример фильтра поиска:
(&(!(entryDN:dnSubtreeMatch:=dc=Piter,dc=Russia,ou=People,dc=example,dc=com))(objectClass=sambaSamAccount)
(|(sn=Lazar*)(uid=Nakhims*)))
- Операции модификации — позволяют изменять данные в Каталоге, при этом в понятие модификации входит как добавление, удаление и перемещение записей целиком, так и редактирование записей на уровне их атрибутов. Подтипы модификации:
- Добавление (add) — добавление новой записи
- Удаление (delete) — удаление записи
- Модификация RDN (modrdn) — перемещение/копирование записи
- Модификация записи (modify) — позволяет редактировать запись на уровне её атрибутов,
* добавляя новый атрибут или новое значение многозначного атрибута (add)
* удаляя атрибут со всеми его значениями (delete)
* заменяя одно значение атрибута на другое (replace)
* а также увеличивая (уменьшая) значение атрибута в рамках атомарной операции (increment)
- Операция сравнения (compare) — позволяет для определённого отличительного имени сравнить выбранный атрибут с заданным значением
Операция запроса возможностей
В стандарте LDAP определена специальная операция, позволяющая клиентам получать информацию о поддерживаемых сервером версиях протокола и возможностях LDAP-сервера. Эта команда является надстройкой (расширением) для операции search и выполняется при следующем сочетании параметров последней:
- BIND анонимный
- База поиска baseDN указана как "" (пустая строка)
- Глубина поиска scope указана как base
- Фильтр поиска: (objectClass=*)
- Перечень запрашиваемых атрибутов: либо явное перечисление, либо «**+» (ВНИМАНИЕ! «***» не покажет значения служебных атрибутов, содержащих всю полезную информацию)
Например, при использовании LDAP-клиента из поставки OpenLDAP команда запроса возможностей может выглядеть как:
ldapsearch -x -H ldap://_host_:_port_ -LLL -b "" -s base '(objectClass=*)' supportedControls supportedCapabilities
Операция запроса схемы
Для запроса информации о действующей схеме LDAP-каталога прежде необходимо выполнить Операцию запроса возможностей, получив значение атрибута subschemaSubentry.
ldapsearch -x -H ldap://_host_:_port_ -LLL -s base -b "" '(objectClass=*)' subschemaSubentry
Полученное значение используется в качестве Отличительного имени базы поиска (baseDN) в Операции запроса схемы, которую можно описать так:
- BIND анонимный, либо полный. Большинство серверов каталогов поддерживают запрос схемы без предварительного BIND, но, есть исключения (например, Active Directory);
- База поиска baseDN равна значению атрибута subschemaSubentry, возвращаемого Операцией запроса возможностей;
- Глубина поиска scope указана как base;
- Фильтр поиска: (objectClass=*);
- Перечень запрашиваемых атрибутов: явное перечисление атрибутов (attributeTypes, objectClasses) возможно для всех серверов каталогов, в случае OpenLDAP и некоторых других (OpenDS,ApacheDS и т. д.) возможно указание «+»;
Например, при использовании LDAP-клиента из поставки OpenLDAP Операция запроса схемы может выглядеть так:
ldapsearch -x -H ldap://_host_:_port_ -LLL -s base -b "cn=Subschema" '(objectClass=*)' ldapSyntaxes matchingRules
Реализации
Серверная часть
LDAP является широко используемым стандартом доступа к службам каталогов. Из свободно распространяемых открытых реализаций наиболее известен сервер OpenLDAP, из проприетарных — поддержка протокола имеется в Active Directory — службе каталогов от компании Microsoft, предназначенной для централизации управления сетями Windows. Сервер IBM Lotus Domino в своем составе также имеет службу LDAP.[2][3] Свои реализации служб каталогов, поддерживающие LDAP как протокол доступа, предлагают и другие крупные компании, например, Novell и Sun — OpenDS[4] и, впоследствии, OpenDJ.
Клиентская часть
В качестве клиентов LDAP выступают как адресные книги почтовых клиентов, так и back-end’ы различных сетевых служб (серверы DNS, SMTP, Samba, UTS и т. д.).
См. также
Примечания
- ↑ Описание параметров LDAP (англ.)
- ↑ The Domino LDAP schema
- ↑ Lotus Domino LDAP Configuration Guide
- ↑ en:OpenDS
Ссылки
Ресурсы
- Руководство администратора OpenLDAP (рус.), содержит ответы на вопросы общего характера, оригинальный текст (англ.) на сайте www.openldap.org
- Книга «LDAP for Rocket Scientists» (рус.), учебник по теме LDAP оригинальный текст (англ.) на сайте www.zytrax.com
- LDAP: архитектура, реализации и тенденции
- Understanding LDAP — Design and Implementation — redbook от IBM
Серверы
- Домашняя страница проекта OpenLDAP
- Apple Open Directory — сервер каталогов и API-framework в Mac OS X Server
- OpenDS — открытый проект, создан на базе кода Sun Enterprise Java System Directory Server
- 389 Directory Server — бывший Fedora Project Directory Server, проект с открытым исходным кодом, на основе которого создаётся коммерческий продукт — RedHat Directory Server
- The Apache Directory Project — сервер каталогов, создаваемый фондом Apache
- Windows Server 2003 Active Directory — официальный сайт Active Directory
- IBM Lotus Domino — Google поиск по LDAP в Lotus Domino
- Mandriva Directory Server
Клиенты
- LdapAdmin — Открытая (GPL) программа под Windows, для управления LDAP данными
- JXplorer — OpenSource утилита для администрирования каталога LDAP на языке Java.
- PHP LDAP admin — развитый клиент LDAP с веб-интерфейсом
Программные интерфейсы (API)
- Perl-LDAP — объектно-ориентированный модуль Perl для работы с LDAP
- ldap и ldaptor — модули для работы с LDAP для Python
- Java LDAP — Java-библиотека для работы с LDAP
- PHP LDAP — PHP функции для работы по протоколу LDAP
Языки запросов |
---|
.QL · CQL · CODASYL · COQL · D · DMX · Datalog · ERROL · ISBL · LDAP · MQL · MDX · OQL · OCL · Poliqarp Query Language · QUEL · SMARTS · SPARQL · SQL · SuprTool · TMQL · XQuery · XPath · XSQL · YQL |
Стандарты The Open Group |
---|
ARM · CDE · CLI · CMPI · DCE · DRDA · LDAP · Motif · SUS (POSIX) · X11 |
Схемы URI | |
---|---|
Официальные | aaa: • aaas: • acap: • cap: • cid: • crid: • data: • dav: • dict: • dns: • fax: • file: • ftp: • go: • gopher: • h323: • http: • https: • im: • imap: • ldap: • mailto: • mid: • news: • nfs: • nntp: • pop: • pres: • rtsp: • sip: • sips: • snmp: • tel: • telnet: • urn: • wais: • xmpp: |
Неофициальные | about: • aim: • bolo: • btc: • bzr: • callto: • chrome: • cvs: • daap: • ed2k: • ed2kftp: • feed: • fish: • git: • gizmoproject: • iax2: • irc: • ircs: • lastfm: • ldaps: • magnet: • mms: • msnim: • psyc: • rsync: • secondlife: • skype: • ssh: • svn: • sftp: • smb: • sms: • soldat: • steam: • unreal: • ut2004: • view-source: • vzochat: • webcal: • xfire: • ymsgr: |
В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники.Эта отметка установлена 12 мая 2011. |
---|