Az OpenLDAP szoftver a könnyűsúlyú címtár-hozzáférési protokoll (LDAP) egyik szabad, nyílt forráskódú megvalósítása, melyet az OpenLDAP Alapítvány(wd) fejleszt. A saját, BSD-stílusú, Open LDAP Public License alatt terjesztik. Az LDAP egy platform független protokoll. Számos Linux disztribúció tartalmazza az OpenLDAP-ot az címtár szolgáltatás megvalósításához. A szoftver még számos rendszeren: BSD-variánsok, AIX, Android, HP-UX, Mac OS X, Sun Solaris, Microsoft Windows (NT és leszármazottai, pl. 2000, XP, Vista, 7 stb.), és z/OS.
A projekt története és az alapcsapat
Az OpenLDAP Projektet Kurt Zeulenga hozta létre 1998-ban. A projektet az University of Michigan referencia LDAP megvalósításából kiindulva kezdték el, az UoM-en egy hosszútávú projekt foglalkozott az LDAP protokoll fejlesztésével.
2006 áprilisában három tagból állt az alapcsapat: Howard Chu (vezető tervező), Pierangelo Masarati, és Kurt Zeilenga. Tovább fontos és aktív közreműködők: Luke Howard, Hallvard Furuseth, Quanah Gibson-Mount, és Gavin Henry.
Az OpenLDAP szoftver részei
Az OpenLDAP három fő komponensből épül fel:
slapd – önálló LDAP démon és a hozzá tartozó modulok és eszközök
A kezdetekben az OpenLDAP szerver (slapd, az önálló [standalone] LDAP démon) felépítése két részre volt osztva, a frontend, ami hálózati kapcsolatokat és a protokollt kezeli, illetve a backend (háttérrendszer), ami kizárólag az adattárolással foglalkozik. Moduláris felépítésű, így nem csak hagyományos adatbázisokkal, de más technológiákkal is összekapcsolható.
Megjegyzés: Korábbi (1.x) kiadásokban, a "háttérrendszer" és az "adatbázis" kifejezéseket, gyakran használták szinonimaként. Hogy precízek legyünk, a "háttérrendszer" tárolási interfészek egy csoportja, és az "adatbázis" egy ezeket megvalósító példány. A slapd szerver tetszőlegesen sok háttérrendszert használhat egyszerre, és minden egyes backend tetszőlegesen sok példányát (vagyis tetszőlegesen sok adatbázist) használhat egyszerre.
Elérhető háttérrendszerek
Jelenleg 16 különféle háttérrendszer érhető el az OpenLDAP disztribúciókba, és számos külső gyártótó kínál saját tárolót. A sztenderd háttérrendszerek nagyjából három kategóriába sorolhatók:
Adattárolók – ezek ténylegesen adatot tárolnak
back-bdb: az első tranzakciós háttérrendszer az OpenLDAPhoz, a BerkeleyDB-n alapul
back-hdb: a back-bdb egy variánsa, amely teljesen hierarchikus és támogatja a részfa átnevezést
back-ldif: egyszerű LDIF fájlokra alapul
back-ndb: tranzakciós háttérrendszer, ami a MySQL NDB klaszter motorján alapul
Proxy háttérrendszerek – ezek átjáróként szolgálnak más adattároló rendszerekhez
back-ldap: egyszerű proxy más LDAP szerverekhez
back-meta: proxy meta-könyvtár képességekkel
back-passwd: a Unix rendszer passwd and group adatait használja
back-relay: átirányít más slapd háttérrendszerre (belül)
Dinamikus háttérrendszerek – ezek menet közben állítják elő az adatokat
back-config: slapd konfiguráció LDAP-on keresztül
back-dnssrv: LDAP szerver keresése DNS-ben
back-monitor: slapd statisztika LDAP-on keresztül
back-null: a Unix /dev/null –hoz hasonló, tevékenység nélküli háttérrendszer
back-perl: perl modult futtat az LDAP kérés megválaszolásához
back-shell: shell szkriptet futtat az LDAP kérés megválaszolásához
back-sock: átirányítja az LDAP kéréseket IPC-n keresztül más démonoknak (tetszőleges)
Néhány a régebbi OpenLDAP kiadásokban szereplő háttérrendszer már nem használatos, például a back-ldbm, amit az eredeti UMich kódból örökölt, illetve a back-tcl, ami a back-perl és back-shell-hez hasonlóan TCL szkriptet futtatott.
A gyakorlatban, a –perl, -shell, és –sock háttérrendszerek tetszőleges programnyelven készült modulok készítését teszi lehetővé, így végtelen lehetőségeket kínál a személyre szabásra. Gyakorlatilag így a slapd egy RPC motorrá válik, egy kompakt, jól definiált és széles körű API-val.
Overlays
Koncepció
Alapesetben az LDAP kéréseket a frontend fogadja, dekódolja, majd továbbítja a háttérrendszernek feldolgozásra. Amikor a háttérrendszer elkészült a válasszal, átadja a frontendnek, ami elküldi az eredményt az LDAP kliensnek. Az overlay egy olyan programkód, amit a frontend és a háttérrendszer közé lehet befűzni. Így extra műveleteket ékelhetünk a folyamatba, mikor a háttérrendszer megkapja a kérést, illetve fordítva, mikor a frontend a választ, az overlayek elérik a slapd belső API-ját, és a frontend és backend minden műveletét hívhatja. Egyszerre több overlay is használható, kialakítva egy művelet sorozatot a frontend és backend között.
Az overlayek kiterjeszthetik a háttérrendszer képességeit anélkül, hogy teljesen újat kellene írni, és új képességeket adhat kompakt, könnyen debuggolható, és karbantartható módon. Mióta az OpenLDAP 2.2-ben megjelent ez a lehetőség a közösség számos overlayt készített.
Elérhető overlayek
Jelenleg 21 overlay található az alap OpenLDAP kiadásnak, és további 15 a felhasználók által készített szekcióban, és még több vár elfogadásra, hogy bekerülhessenek.
Az alapkiadásban szereplő overlayek:
accesslog: naplózza a szerver tevékenységeit, egy másik LDAP adatbázisba, így LDAP-on keresztül elérhetőek a naplóállományok
auditlog: a szerver tevékenységeinek naplózása egyszerű szövegfájlba
chain: intercept referrals and chain them instead; code is part of back-ldap
collect: X.500 stílusú kollektív attribútumokat valósít meg (mint a Netscape Class Of Service)
constraint: korlátozza egyes attribútumok lehetséges értékeit (értékhalmaz, -tartomány)
dds: dinamikus adat szolgáltatás (dynamic data service) – rövid élettartamú, önmaguktól lejáró bejegyzések
deref: a keresés eredményeképpen visszakapott hivatkozott bejegyzésekről szolgáltat adatot
dyngroup: egyszerű dinamikus csoporttámogatás
dynlist: kifinomultabb dinamikus csoporttámogatás és mások
memberof: a memberOf (tagja) és hasonló hivatkozó attribútumok támogatása
pcache: keresési eredmények gyorsító tárazása
ppolicy: LDAP jelszó szabályzat (jelszó minősége, élettartama stb.)
refint: hivatkozási integritás
retcode: előre meghatározott válaszkódot ad meg az egyes műveletekhez, kliensek debuggolásához használatos
rwm: rewrite modul, LDAP adatok különböző álneveihez
seqmod: szerializálja az írási műveleteket az egyes bejegyzésekhez
sssvlv: szerver oldali rendezés és virtuális listanézet (Server Side Sorting and Virtual List Views)
syncprov: (Syncrepl Provider) a replikáció mester oldalát valósítja meg
translucent: Semi-transparent pass-through, for locally augmenting data on a proxied server (?)
unique: egyediség kikényszerítése egy fában lévő attribútumokon
valsort: egy attribútum értékeinek rendezési sorrendjét tartja karban
A felhasználók által készített overlayek:
addpartial: fogadja az Add (hozzáadás) kéréseket és Modified (módosítás) kéréssé alakítja, ha a bejegyzés már létezik
allop: visszaadja az összes működési jellemzőt, azon kliensek számára, akik nem tudják, hogyan kérjék azokat
autogroup: dinamikusan menedzselt statikus csoport
cloak: a külön nem kért attribútumok elrejtése a keresésekben
denyop: megtagadja a tiltott kéréseket (külön konfigurálható)
dupent: többértékű eredményeket, külön bejegyzésekre bontja
lastbind: a felhasználó utolsó sikeres bejelentkezésének idejét rögzíti
lastmod: rögzíti az utolsó módosítást egy adott fában
nops: kiszűri a redundáns módosításokat
noopsrch: megadja hány bejegyzéssel térne vissza az adott keresés
nssov: az NSS és PAM kéréseket közvetlenül a slapd-ben válaszolja meg, kiváltva az nss-ldap és pam-ldap démonokat
proxyOld: támogatja a Sun féle ProxyAuthz elavult kódolását
smbk5pwd: karbantartja a Samba és Kerberos jelszavakat
trace: Naplóz minden LDAP kérést és választ
usn: Update Sequence Numbers (ahogyan Microsoft AD-ben történik, még nem jelent meg)