LDAP (англ. Lightweight Directory Access Protocol — Полегшений протокол доступу до директорій / каталогів) — мережевий протокол прикладного рівня для надсилання запитів та модифікації даних служби каталогів через TCP/IP. LDAP є відкритим, комерційно-нейтральним, (англ. vendor-neutral), промисловим стандартним протоколом. LDAP розроблений IETF як полегшений варіант розробленого ITU-T протоколу DAP.

Серед поширених варіантів використання LDAP — надання єдиного сховища для зберігання імен користувачів та паролів. Це дозволяє різним службам та застосункам надсилати запити до LDAP сервера для валідації користувачів[1].

Короткий опис ред.

LDAP — відносно простий протокол, що використовує TCP/IP і дозволяє проводити операції аутентифікації (bind), пошуку (search) та порівняння (compare), а також операції додавання, зміни або видалення записів. Зазвичай LDAP-сервер приймає вхідні з'єднання на порт 389 по протоколах TCP або UDP. Для LDAP-сеансів, інкапсульованих в SSL, зазвичай використовується порт 636.

Будь-який запис у каталозі LDAP складається з одного або декількох атрибутів і володіє унікальним / розрізняльним ім'ям (DN — англ. Distinguished Name). Унікальне ім'я може виглядати, наприклад, наступним чином: «cn = Іван Петренко, ou = Співробітники, dc = example, dc = com». Унікальне ім'я складається з одного або декількох відносних унікальних імен (RDN — англ. Relative Distinguished Name), розділених комою. Відносне унікальне ім'я має вигляд ІмяАтрибута = значення. На одному рівні каталогу не може існувати двох записів з однаковими відносними унікальними іменами. В силу цієї структури унікального імені записи в каталозі LDAP можна легко уявити у вигляді дерева.

Запис може складатися тільки з тих атрибутів, які визначені в описі класу запису (object class), які, у свою чергу, об'єднані в схеми (schema). У схемі визначено, які атрибути є для даного класу обов'язковими, а які — необов'язковими. Також схема визначає тип і правила порівняння атрибутів. Кожен атрибут запису може зберігати кілька значень.

Як правило, каталог LDAP реалізується згідно з моделлю X.500: він складається із дерева записів[2], кожне з яких складається із множини іменованих атрибутів зі значеннями. Деякі зі служб підтримують складнішу модель «ліс», але більшість мають лише один початковий запис.

Залежно від обраної моделі, LDAP-каталог часто віддзеркалює різноманітні політичні, географічні, та (або) організаційні регіони. Встановлені LDAP-системи схиляються до використання доменних імен (DNS) для структурування найвищих рівнів ієрархії. На нижчих рівнях в каталозі можуть бути записи, які відповідають людям, організаційним підрозділам, принтерам, документам, групам людей, або будь чому іншому, що представляє даний запис, або множину записів в каталозі.

Остання версія протоколу — LDAPv3. Стандарт LDAPv3 визначено в низці документів IETF, як описано в RFC 4510.

Структура каталогів ред.

Протокол надає інтерфейс з каталогами, які відповідають стандарту X.500 видання 1993 р.:

  • Запис складається з набору атрибутів.
  • Атрибут має ім'я, яке може бути типом атрибута (attribute type) або описом (фактично скороченою назвою) атрибута (attribute description), і одне або кілька значень. Атрибути визначені в схемі.
  • Кожен запис має унікальний ідентифікатор: його розрізняльне ім'я (Distinguished Name — DN). Воно складається з одного чи декількох відносних розрізняльних імен (Relative Distinguished Name — RDN), утворених з одного чи декількох атрибутів в запису. Можна уявити DN як повний шлях до файлу і RDN як ім'я файлу в батьківській папці (наприклад, якщо /foo/bar/myfile.txt є DN, то myfile.txt буде RDN). Добре DN і RDN пояснено тут [Архівовано 8 листопада 2014 у Wayback Machine.].

Про опис атрибута йдеться в третьому розділі RFC 4514:

Implementations MUST recognize AttributeType name strings
(descriptors) listed in the following table, but MAY recognize other
name strings. 
(Реалізації ПОВИННІ розпізнавати рядки назв AttributeType (дескрипторів), перелічених в
наступній таблиці, але МОЖУТЬ розпізнавати й інші назви рядків.)
     String  X.500 AttributeType
     ------  --------------------------------------------
     CN      commonName (2.5.4.3)
     L       localityName (2.5.4.7)
     ST      stateOrProvinceName (2.5.4.8)
     O       organizationName (2.5.4.10)
     OU      organizationalUnitName (2.5.4.11)
     C       countryName (2.5.4.6)
     STREET  streetAddress (2.5.4.9)
     DC      domainComponent (0.9.2342.19200300.100.1.25)
     UID     userId (0.9.2342.19200300.100.1.1)

Подану вище таблицю можна оформити так:

(Скорочена) назва Атрибут X.500 Ідентифікатор об'єкта (OID)
CN commonName 2.5.4.3

L

localityName 2.5.4.7
ST stateOrProvinceName 2.5.4.8
O organizationName 2.5.4.10
OU organizationalUnitName 2.5.4.11
C countryName 2.5.4.6
STREET streetAddress 2.5.4.9
DC domainComponent 0.9.2342.19200300.100.1.25
UID userId 0.9.2342.19200300.100.1.1

Назви (імена) атрибутів у формі тип атрибута і опис атрибута наведені та описані в RFC 4519.

Історія виникнення ред.

Телекомунікаційні компанії впровадили концепцію служби каталогів до інформаційних технологій та комп'ютерних мереж так як вони розуміли, на підставі свого 70-річного досвіду роботи з телефонними каталогами. Це вилилося у специфікації X.500 (набору протоколів розробленого ITU у 1980 роках). X.500 служби каталогів були доступні через X.500 протокол доступу до каталогів (англ. Directory Access Protocol — DAP), який використовував Open Systems Interconnection (OSI) стек протоколів. Розробка LDAP мала на меті полегшити доступ до X.500 служби каталогів через простіший стек протоколів TCP/IP.

Посилання ред.

RFC ред.

LDAP описано в низці документів Request for Comments:

  • RFC 4510 — LDAP: Technical Specification Road Map (LDAP: Дорожня карта (путівник) технічних характеристик) (Obsoletes (замінює застарілі): RFC 2251, RFC 2252, RFC 2253, RFC 2254, RFC 2255, RFC 2256, RFC 2829, RFC 2830, RFC 3377, RFC 3771)
  • RFC 4511 — LDAP: The Protocol (Протокол) (Obsoletes RFC 2251, RFC 2830 & RFC 3771)
  • RFC 4512 — LDAP: Directory Information Models (Моделі вмісту каталогу) (Obsoletes RFC 2251, RFC 2252, RFC 2256 & RFC 3674)
  • RFC 4513 — LDAP: Authentication Methods and Security Mechanisms (Методи автентифікації і механізми безпеки) (Obsoletes RFC 2251, RFC 2829 & RFC 2830)
  • RFC 4514 — LDAP: String Representation of Distinguished Names (Рядкове подання розрізняльних імен) (Obsoletes RFC 2253)
  • RFC 4515 — LDAP: String Representation of Search Filters (Рядкове подання фільтрів пошуку) (Obsoletes RFC 2254)
  • RFC 4516 — LDAP: Uniform Resource Locator (Універсальний локатор ресурсу) (Obsoletes RFC 2255)
  • RFC 4517 — LDAP: Syntaxes and Matching Rules (Синтаксис і правила відповідності) (Obsoletes RFC 2252 & RFC 2256, Updates (оновлює) RFC 3698)
  • RFC 4518 — LDAP: Internationalized String Preparation (Інтернаціоналізована підготовка рядків)
  • RFC 4519 — LDAP: Schema for User Applications (Схема для користувацьких застосунків/додатків) (Obsoletes RFC 2256, Updates RFC 2247, RFC 2798 & RFC 2377)

Наступні RFCи детально описують LDAP-специфічні найкращі існуючі практики/технічні прийоми:

  • RFC 4520 (also (також) BCP 64) — Internet Assigned Numbers Authority (IANA) Considerations for the Lightweight Directory Access Protocol (LDAP) (Адміністрації адресного простору Інтернет (IANA) рекомендації/міркування для полегшеного протоколу служби каталогів (LDAP)) (replaced (замінений) RFC 3383)
  • RFC 4521 (also BCP 118) — Considerations for Lightweight Directory Access Protocol (LDAP) Extensions (Рекомендації щодо розширень полегшеного протоколу служби каталогів (LDAP))

Неповний список RFCів, які визначають розширення LDAPv3:

  • RFC 2247 — Use of DNS domains in distinguished names (Використання DNS доменів в розрізняльних іменах) (Updated by RFC 4519 & RFC 4524)
  • RFC 2307 — Using LDAP as a Network Information Service[en] (Використання LDAP як Інформаційної служби мережі)
  • RFC 2589 — LDAPv3: Dynamic Directory Services Extensions (Розширення служби динамічного каталогу)
  • RFC 2649 — LDAPv3 Operational Signatures (LDAPv3 Операційні підписи)
  • RFC 2696 — LDAP Simple Paged Result Control (LDAP Простий сторінковий контроль результатів)
  • RFC 2798 — inetOrgPerson LDAP Object Class (inetOrgPerson клас об'єкта LDAP) (Updated by (Оновлений в) RFC 3698, RFC 4519 & RFC 4524)
  • RFC 2830 — LDAPv3: Extension for Transport Layer Security (LDAPv3: Розширення для безпеки на транспортному рівні)
  • RFC 2849 — The LDAP Data Interchange Format (LDIF) (Формат обміну даними LDAP (LDIF))
  • RFC 2891 — Server Side Sorting of Search Results (Серверна частина/сторона сортування результатів пошуку)
  • RFC 3045 — Storing Vendor Information in the LDAP root DSE (Збереження інформації про виробника в кореневих DSE LDAP)
  • RFC 3062 — LDAP Password Modify Extended Operation (Розширена операція зміни пароля в LDAP)
  • RFC 3296 — Named Subordinate References in LDAP Directories (Іменовані підлеглі посилання в LDAP каталогах)
  • RFC 3671 — Collective Attributes in LDAP (Колективні/спільні атрибути в LDAP)
  • RFC 3672 — Subentries in LDAP (Підзаписи в LDAP)
  • RFC 3673 — LDAPv3: All Operational Attributes (LDAPv3: Всі операційні атрибути)
  • RFC 3687 — LDAP Component Matching Rules (LDAP Компонент правил відповідності)
  • RFC 3698 — LDAP: Additional Matching Rules (LDAP: Додаткові правила відповідності)
  • RFC 3829 — LDAP Authorization Identity Request and Response Controls (Авторизація запитів ідентифікації і відповіді управління)
  • RFC 3866 — Language Tags and Ranges in LDAP (Мовні теги і діапазони в LDAP)
  • RFC 3909 — LDAP Cancel Operation (LDAP Операція скасування)
  • RFC 3928 — LDAP Client Update Protocol (LCUP) (Клієнтський протокол оновлень)
  • RFC 4370 — LDAP Proxied Authorization Control (Доручений контроль авторизації)
  • RFC 4373 — LDAP Bulk Update/Replication Protocol (LBURP) (Протокол масового оновлення/реплікації)
  • RFC 4403 — LDAP Schema for Universal Description, Discovery, and Integration version 3 (UDDIv3) (LDAP Схема для опису, представлення та інтеграції версії 3 (UDDIv3))
  • RFC 4522 — LDAP: Binary Encoding Option (Опція двійкового кодування)
  • RFC 4523 — LDAP: X.509 Certificate Schema (Схема Х.509-сертифікату)
  • RFC 4524 — LDAP: COSINE Schema (replaces RFC 1274) (Схема COSINE (Co-operation and Open Systems Interconnection in Europe (Кооперація і взаємодія відкритих систем в Європі))
  • RFC 4525 — LDAP: Modify-Increment Extension (Розширення зміни-збільшення [значення атрибутів])
  • RFC 4526 — LDAP: Absolute True and False Filters (Абсолютні фільтри істини і хибності)
  • RFC 4527 — LDAP: Read Entry Controls (Управління читанням записів)
  • RFC 4528 — LDAP: Assertion Control (Управління підтвердженням)
  • RFC 4529 — Requesting Attributes by Object Class in the Lightweight Directory Access Protocol (LDAP) (Запит атрибутів за класом об'єкта в LDAP)
  • RFC 4530 — LDAP: entryUUID Operational Attribute (Операційний атрибут entryUUID [UUID запису])
  • RFC 4531 — LDAP Turn Operation (Операція зміни [ролей клієнта і сервера])
  • RFC 4532 — LDAP «Who am I?» Operation («Хто я?» операція)
  • RFC 4533 — LDAP Content Synchronization Operation (Операція синхронізації контенту)
  • RFC 4876 — Configuration Profile Schema for LDAP-Based Agents (Конфігурація профілю схеми для LDAP-заснованих агентів)
  • RFC 5020 — LDAP entryDN Operational Attribute (Операційний атрибут entryDN [запис розрізняльного імені])

LDAPv2 було зазначено в наступних документах RFC:

  • RFC 1777 — Lightweight Directory Access Protocol (replaced RFC 1487)
  • RFC 1778 — The String Representation of Standard Attribute Syntaxes (Рядкове подання синтаксисів стандартних атрибутів) (replaced RFC 1488)
  • RFC 1779 — A String Representation of Distinguished Names (Рядкове подання розрізняльних імен) (replaced RFC 1485)

LDAPv2 був наданий історичний статус за наступним RFC:

  • RFC 3494 — Lightweight Directory Access Protocol version 2 (LDAPv2) to Historic Status (Полегшений протокол доступу до каталогів версії 2 (LDAPv2)) в історичний статус)
 
Історія RFCів пов'язаних з LDAP

Примітки ред.

  1. Introduction to OpenLDAP Directory Services. OpenLDAP. Процитовано 1 лютого 2016.
  2. ITU-T Recommendation X.500 (11/08) «Information technology — Open Systems Interconnection — The Directory: Overview of concepts, models and services» [Архівовано 17 грудня 2014 у Wayback Machine.], зокрема Figure 2 — Structure of the DIT and of entries