LDAP

Матеріал з Вікіпедії — вільної енциклопедії.
Версія від 19:52, 25 листопада 2017, створена Bunyk (обговорення | внесок) (вікіфікація (додавання внутрішніх посилань))
Перейти до навігації Перейти до пошуку

LDAP (англ. Lightweight Directory Access ProtocolПолегшений протокол доступу до директорій / каталогів) — мережевий протокол прикладного рівня для надсилання запитів та модифікації даних служби каталогів через TCP/IP. LDAP є відкритим, комерційно-нейтральним, (англ. vendor-neutral), промисловим стандартним протоколом. LDAP розроблений 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». Унікальне ім'я складається з одного або декількох відносних унікальних імен (RDN - англ. Relative Distinguished Name), розділених комою. Відносне унікальне ім'я має вигляд ІмяАтрибута = значення. На одному рівні каталогу не може існувати двох записів з однаковими відносними унікальними іменами. В силу цієї структури унікального імені записи в каталозі LDAP можна легко уявити у вигляді дерева.

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

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

Залежно від обраної моделі, 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 пояснено тут.

Про опис атрибута йдеться в третьому розділі 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