LDAP
LDAP (англ. Lightweight Directory Access Protocol — Полегшений протокол доступу до директорій / каталогів) — мережевий протокол прикладного рівня для надсилання запитів та модифікації даних служби каталогів через TCP/IP. LDAP є відкритим, комерційно-нейтральним, (англ. vendor-neutral), промисловим стандартним протоколом. LDAP розроблений IETF як полегшений варіант розробленого ITU-T протоколу DAP.
Модель TCP/IP (RFC 1122) |
---|
Прикладний рівень |
Транспортний рівень |
Мережевий рівень |
Канальний рівень |
Короткий опис
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.
Примітки
- ITU-T Recommendation X.500 (11/08) "Information technology – Open Systems Interconnection – The Directory: Overview of concepts, models and services", зокрема Figure 2 – Structure of the DIT and of entries
Посилання
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) (Протокол масового оновлення/реплікації)
- 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)) в історичний статус)