LDAP

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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 (Використання 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) (Протокол масового оновлення/реплікації)

Тимчасовий розділ для зручності редагування

LDAPv2 was specified in the following RFCs:

LDAPv2 was moved to historic status by the following RFC:

  • RFC 3494 - Lightweight Directory Access Protocol version 2 (LDAPv2) to Historic Status
Історія RFCів пов'язаних з LDAP