Lightweight Directory Access Protocol – Wikipedia

The Lightweight Directory Access Protocol (LDAP) is a directory service protocol that runs on a layer above the TCP/IP stack. It provides a mechanism used to connect to, search, and modify Internet directories.

Стандарты[править | править код]

Протокол 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

Кроме протокола, есть верхнеуровневые международные стандарты, описывающие все, что связано с моделью интеграции систем и каталогом (Directory), доступ к которому реализуется с помощью LDAP и DAP:

  • Recommendation ITU-T X.200 (1994) | ISO/IEC 7498-1:1994, Information technology — Open Systems Interconnection — Basic Reference Model: The basic model.
  • Recommendation ITU-T X.500 (2019) | ISO/IEC 9594-1:2020, Information technology — Open Systems Interconnection — The Directory: Overview of concepts, models and services.
  • Recommendation ITU-T X.501 (2019) | ISO/IEC 9594-2:2020, Information technology — Open Systems Interconnection — The Directory: Models.
  • Recommendation ITU-T X.509 (2019) | ISO/IEC 9594-8:2020, Information technology — Open Systems Interconnection — The Directory: Public-key and attribute certificate frameworks.
  • Recommendation ITU-T X.511 (2019) | ISO/IEC 9594-3:2020, Information technology — Open Systems Interconnection — The Directory: Abstract service definition.
  • Recommendation ITU-T X.518 (2019) | ISO/IEC 9594-4:2020, Information technology — Open Systems Interconnection — The Directory: Procedures for distributed operation.
  • Recommendation ITU-T X.519 (2019) | ISO/IEC 9594-5:2020, Information technology — Open Systems Interconnection — The Directory: Protocol specifications.
  • Recommendation ITU-T X.520 (2019) | ISO/IEC 9594-6:2020, Information technology — Open Systems Interconnection — The Directory: Selected attribute types.
  • Recommendation ITU-T X.521 (2019) | ISO/IEC 9594-7:2020, Information technology — Open Systems Interconnection — The Directory: Selected object classes.
  • Recommendation ITU-T X.525 (2019) | ISO/IEC 9594-9:2020, Information technology — Open Systems Interconnection — The Directory: Replication.

History[edit]

Telecommunication companies’ understanding of directory requirements were well developed after some 70 years of producing and managing telephone directories. These companies introduced the concept of directory services to information technology and computer networking, their input culminating in the comprehensive X.500 specification,[6] a suite of protocols produced by the International Telecommunication Union (ITU) in the 1980s.

X.500 directory services were traditionally accessed via the X.500 Directory Access Protocol (DAP), which required the Open Systems Interconnection (OSI) protocol stack. LDAP was originally intended to be a lightweight alternative protocol for accessing X.500 directory services through the simpler (and now widespread) TCP/IP protocol stack. This model of directory access was borrowed from the DIXIE and Directory Assistance Service protocols.

The protocol was originally created[7] by Tim Howes of the University of Michigan, Steve Kille of Isode Limited, Colin Robbins of Nexor and Wengyik Yeong of Performance Systems International, circa 1993, as a successor[8] to DIXIE and DAS. Mark Wahl of Critical Angle Inc., Tim Howes, and Steve Kille started work in 1996 on a new version of LDAP, LDAPv3, under the aegis of the Internet Engineering Task Force (IETF). LDAPv3, first published in 1997, superseded LDAPv2 and added support for extensibility, integrated the Simple Authentication and Security Layer, and better aligned the protocol to the 1993 edition of X.500. Further development of the LDAPv3 specifications themselves and of numerous extensions adding features to LDAPv3 has come through the IETF.

In the early engineering stages of LDAP, it was known as Lightweight Directory Browsing Protocol, or LDBP. It was renamed with the expansion of the scope of the protocol beyond directory browsing and searching, to include directory update functions. It was given its Lightweight name because it was not as network intensive as its DAP predecessor and thus was more easily implemented over the Internet due to its relatively modest bandwidth usage.

LDAP has influenced subsequent Internet protocols, including later versions of X.500, XML Enabled Directory (XED), Directory Service Markup Language (DSML), Service Provisioning Markup Language (SPML), and the Service Location Protocol (SLP). It is also used as the basis for Microsoft’s Active Directory.

Установка OpenLDAP

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

apt-get install slapd ldap-utils

По зависимостям будет установлено еще несколько пакетов. При установке будет запрошен пароль пользователя admin. Задавайте любой, мы все равно будем после установки задавать собственную конфигурацию.

Если вам нужна самая свежая версия OpenLDAP, то исходные коды можно скачать на официальном сайте.

Функциональное описание протокола[править | править код]

В протоколе 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 с помощью утилиты ldapsearch.

%# # ldapsearch -W -x -D cn=admin,dc=mydc,dc=com -b “dc=mydc,dc=com” “(ou=People)”Enter LDAP Password: # extended LDIF## LDAPv3# base <dc=mydc,dc=com> with scope sub# filter: (ou=People)# requesting: ALL## People, mydc.comdn: ou=People,dc=mydc,dc=comobjectClass: topobjectClass: organizationalUnitou: People# search resultsearch: 2result: 0 Success# numResponses: 2# numEntries: 1

Аутентифицироваться при подключении к каталогу под именем cn=admin,dc=mydc,dc=com, использовать простую аутентификацию (-x), спросить пароль (-W).Результат выполнения команды ldapsearch представлен в формате LDIF (LDAP Interchange Format). В этом формате записи представляются как набор полей, каждое из которых записывается в отдельном поле в виде пары:

имя_поля:значение_поля

Найденная запись содержит поля dn, objectClass и ou и выглядит так:

dn: ou=People,dc=mydc,dc=comobjectClass: topobjectClass: organizationalUnitou: People

Доступ к каталогу осуществляется от имени cn=admin,dc=mydc,dc=com, которое называется именем привязки (bind name). Имя привязки это полное имя (DN, distinguished name) учётной записи в каталоге пользователя, от имени которого будет производиться работа с каталогом.

Реализации[править | править код]

Серверная часть[править | править код]

LDAP является широко используемым стандартом доступа к службам каталогов. Из свободно распространяемых открытых реализаций наиболее известен сервер OpenLDAP, из проприетарных — поддержка протокола имеется в Active Directory — службе каталогов от компании Microsoft, предназначенной для централизации управления сетями Windows. Сервер IBM Lotus Domino в своём составе также имеет службу LDAP.[2][3] Свои реализации служб каталогов, поддерживающие LDAP как протокол доступа, предлагают и другие крупные компании, например, Novell и Sun — OpenDS[en] и, впоследствии, OpenDJ.

Перечень наиболее известных на сегодняшний день LDAP-серверов:

  1. OpenLDAP
  2. ForgeRock OpenDJ
  3. Novell eDirectory
  4. Apple Open Directory (форк проекта OpenLDAP)
  5. Microsoft Active Directory
  6. Samba4 LDAP (OpenSource-реализация MS AD)
  7. RedHat Directory Server
  8. 389 Directory Server (по сути тестовая версия предыдущего)
  9. Oracle Directory Server
  10. Apache Directory Server
  11. IBM Tivoli Directory Server
  12. IBM Domino LDAP
  13. CommuniGate LDAP

Клиентская часть[править | править код]

В качестве клиентов LDAP выступают как адресные книги почтовых клиентов, так и back-end’ы различных сетевых служб (серверы DNS, SMTP, Samba, UTS и т. д.).

Область применения

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

  • Элемент маркированного списка
  • Идентификация компьютеров
  • Аутентификация пользователей
  • Группировка пользователей (в том числе системные группы)
  • Адресные книги
  • Представление штатно-кадровой структуры организации
  • Учет закрепления имущества организации за сотрудниками
  • Телефонные справочники
  • Управление пользовательскими ресурсами
  • Справочники адресов электронной почты
  • Хранение конфигурации приложений

Хранение конфигурации АТС

See also[edit]

  • Ambiguous name resolution
  • CCSO Nameserver
  • Federated Naming Service
  • Hesiod (name service)
  • Hierarchical database model
  • Key server (cryptographic)
  • LDAP Application Program Interface
  • List of LDAP software
  • Simple Authentication and Security Layer (SASL)

См. также

  • http://xgu.ru/wiki/ldapsearch
  • http://citkit.ru/articles/1209/

Рекомендации

Примечания

  • Рек. МСЭ-Т. X.680 , “Абстрактная синтаксическая нотация один (ASN.1) – Спецификация базовой нотации”, 1994 г.
  • Базовые правила кодирования (BER) – Рек. X.690, «Спецификация правил кодирования ASN.1: основные, канонические и особые правила кодирования», 1994 г.
  • RFC 3641 – Общие правила кодирования строк (GSER) для типов ASN.1
  • RFC 4346 – протокол TLS версии 1.1
  • RFC 4422 – уровень простой аутентификации и безопасности ( SASL )
  • Механизмы SASL, зарегистрированные в IANA
  • List of public LDAP Servers (2013): “Ldapwiki: Public LDAP Servers”. ldapwiki.com. 2013. Retrieved 2020-01-18.
Рейтинг
( 1 оценка, среднее 5 из 5 )
Загрузка ...