LDAP — Lightweight Directory Access Protocol nomli, tarmoq orqali katalog xizmatidagi ierarxik ma’lumotni qidirish va boshqarish protokoli. Katalog ma’lumotlar bazasi ko‘p o‘qiladigan, nisbatan kam o‘zgaradigan yozuvlar uchun mos bo‘lib, foydalanuvchi, guruh, qurilma va tashkiliy birliklarni saqlashi mumkin. LDAP katalogning o‘zi emas; client bilan directory server orasidagi amallar, ma’lumot modeli va xabar formatini belgilaydi.
Katalog daraxti
LDAP yozuvlari Directory Information Tree ichida joylashadi. Har bir entry Distinguished Name, ya’ni DN bilan noyob aniqlanadi. DN entryning Relative Distinguished Name qismlaridan va ota yo‘lidan tuziladi:
uid=farrukh,ou=people,dc=uzbekdevs,dc=uz
Bu yerda uid=farrukh yozuvning lokal nomi, ou=people tashkiliy birlik, dc qismlari esa domen komponentlaridir. Entry bir nechta atributga ega. objectClass atributi qaysi schema qoidalari qo‘llanishini va majburiy yoki ixtiyoriy maydonlarni belgilaydi. Bir entry bir nechta object classga mansub bo‘lishi mumkin.
Protokol amallari
Client avval serverga ulanish ochadi va bind amali orqali anonim yoki ma’lum identity bilan sessiya o‘rnatadi. Search amali base DN, scope, filter va qaytariladigan atributlar ro‘yxatini oladi. Scope faqat base entry, uning bevosita bolalari yoki butun subtree bo‘lishi mumkin. Filter quyidagicha yoziladi:
(&(objectClass=person)([email protected]))
Add, delete, modify va modify DN katalog yozuvlarini boshqaradi. Compare bitta atribut qiymatini tekshiradi. LDAP asinxron message ID ishlatgani sababli bir ulanishda bir nechta so‘rov kuzatilishi mumkin. Katta natijalar server-side limitga tushadi; paged results control natijani sahifalab olishga yordam beradi.
Autentifikatsiya va ruxsat
Simple bind DN va parol yuboradi, shu sababli u faqat TLS bilan himoyalangan kanalda ishlatiladi. SASL Kerberos kabi tashqi autentifikatsiya mexanizmlarini qo‘llashi mumkin. Muvaffaqiyatli bind katalogdagi barcha yozuvlarga ruxsat degani emas: server access control qoidalari orqali qaysi identity qaysi atributni o‘qishi yoki o‘zgartirishini belgilaydi.
Ilova foydalanuvchini tekshirishda avval xizmat hisobi bilan qidirib DNni topishi, keyin topilgan DN va foydalanuvchi paroli bilan alohida bind bajarishi mumkin. Katalogdagi parol xeshini olib ilovaning o‘zi solishtirishi odatda kerak emas. Xizmat hisobi minimal qidiruv huquqiga ega bo‘ladi va uning credentiali secret sifatida boshqariladi.
TLS va endpointlar
LDAP odatda TCP 389 portida ishlaydi. StartTLS shu ulanishni TLSga ko‘taradi. LDAPS deb ataladigan implicit TLS ko‘pincha 636 portdan foydalanadi. Client server sertifikati zanjiri va hostname’ni tekshirishi kerak; faqat trafik shifrlangani noto‘g‘ri serverga ulanishdan himoya qilmaydi. TLSsiz bind va qidiruv shaxsiy ma’lumot hamda credentialni tarmoqda oshkor qilishi mumkin.
Replikatsiya va izchillik
Directory serverlar mavjudlik va yaqin o‘qish uchun replikatsiya qilinadi. Bir nechta yozuvchi tugunda bir vaqtda o‘zgarish conflict siyosatini talab qiladi. Replikatsiya kechikishi sababli yangi parol yoki guruh a’zoligi barcha serverda darhol ko‘rinmasligi mumkin. Ilova failover qilganda shu eventual consistency xususiyatini hisobga oladi. Backup schema, konfiguratsiya va encryption keylarni ham qamrab oladi; oddiy LDIF eksporti barcha server holatini to‘liq aks ettirmasligi mumkin.
LDAP filteriga foydalanuvchi kiritmasi oddiy satr birlashtirish bilan qo‘shilmaydi. *, qavs, backslash va null byte maxsus ma’noga ega bo‘lib, noto‘g‘ri escaping LDAP injectionga olib kelishi mumkin. Tayyor kutubxonaning filter escaping funksiyasi ishlatiladi va base DN hamda qaytariladigan atributlar minimal chegaralanadi.
Bog‘liq tushunchalar
Directory service, Distinguished Name, Active Directory, LDAPS, SASL, Kerberos, Directory Information Tree