OpenLDAP
OpenLDAP Software je volně šířitelná iplementace Lightweight Directory Access Protocol (LDAP). Je uvolněn pod svojí vlastní BSD licencí nazývanou OpenLDAP public Licence. LDAP je protokol nezávyslý na platformě. Několik linuxových distribucí obsahují OpenLDAP software pro podporu LDAP. Software běží na BSD systémech stejně tak jako na AIX, Android, HP-UX, Mac OS X, Solaris, Microsoft Windows( NT a systémy který z něj vycházejí např. 2000, XP, Vista,7 atd) .
Historie projektu a jádro týmu
OpenLDAP projekt byl založen v roce 1998 Kurtem Zeilengaem. Projekt začal kopírováním referenčního zdrojového kódu LDAP z University of Michigan, kde kde probíhal dlouhodobý projekt podporující vývoj protokolu LDAP. V dubnu 2006 měl OpenLDAP projekt tři základní členy: Howard Chu (hlavní vývojář) Pierangelo Masarati, Kurt Zeilenga a bezpočet dalších důležtých a aktivních přispěvatelů např. Luke Howard, Hallvard Furuseth, Quanah Gibson-Mount, a Gavin Henry.
Komponenty OpenLDAP softwaru
OpenLDAP má tři hlavní komponenty
- slapd – samostatný LDAP démon a přidružené moduly a nástroje
- knihovny implementující LDAP protokol a ASN.1, BER (Basic Encoding Rules)
- softvérové klienty: ldapsearch, ldapadd, ldapdelete, a další
Navíc OpenLDAP projekt obsahuje několik podprojektů
- JLDAP – LDAP knihovní třídy pro Javu
- JDBC-LDAP – Java JDBC – LDAP Bridge drivers
- Idapc++ - LDAP knihovní třídy pro C++
- Fortress – RBAC (role-based access control)
- MDB – Memory-mapped databázové knihovny
Backeds
Souhrný koncept
Struktura OpenLDAP serveru (slapd, samostatný LDAP démon) se rozdělila na dvě čásní. Frontend který zajištuje přístup na síť a běh protokolu. Backend který se stará pouze o datvé uložiště. Struktura je modulární a je dostupné velké množství různých Backendů pro spolupráci s dalšími technologiemi, nejenom s tradičními databázemi.
Poznámka: Ve starších (1.X) verzích se pojem backend a databáze často zaměnovaly. Chceme-li být přesní , "backend" je třída implementující rozhraní uložiště a "databáze" je instancí této třídy. Slapd server může najednou používat libovolné množství backendů a libovolné množsví instací každého z těchto backendu(databází).
Dostupné backendy
v součastnosi existuje 16 ruzných backendů dodávaných s distribucí LDAP. Mnoho dalších backendů je vyvýjeno a spravováno třetími stranami. Standartní backendy jsou volně rozdělené do tří kategorií.
- Data storage backends – starají se o ukládání dat:
- back-bdb: je to první backend pro OpenLDAP využívající transakce, vychází BerkeleyDB
- back-hdb: jedná se o variantu back-bdb, která má úplnou hierarchickou strukturu a podporuje přejmenování podstromů
- back-ldif: vychází čistě z textových LDIF souboru
- back-mdb: transakční backend využívající OpenLDAP's MDB memory-mapped database
- back-ndb: transakční backend využívající MySQL's NDB cluster engine
- Proxy backends – chovají se jako brány k dalším uloženým systémům
- back-ldap: jednoduché proxy k dalším LDAP serverům
- back-meta: proxy s funkcí meta-adresářů
- back-passwd: používa Unix system passwd a skupinová data
- back-relay: vnitřne přesměrované na dlaší slapd backendy
- back-sql: spolupracuje s různými SQL databasemi
- Dynamic backends – tyto backendy dynamicky generují data
- back-config: slapd konfigurace přes LDAP
- back-dnssrv: VYhledává LDAP servery pomocí DNS
- back-monitor: slapd statistiky pomocí LDAP
- back-null: podobné Unixovému /dev/null
- back-perl: vyvolá libovolné perlové moduly v reakci na protokolu LDAP
- back-shell: vyvolá shell skripty pro LDAP požadavky
- back-sock: přeposílá LDAP dotazy přes IPC různům daemonům
Některé backendy ze starších verzích se přestaly používat. Nejdůležitější z nich back-ldbm který vycházel z původníhho Umich kódu a back-tcl který byl podobný back-perl a back-shell. V praxi, backendy jako -perl -shell a -sock používají jako rozhraní k různým programovacím jjazykům a tak poskytují neomezené možnosti přizpusobení a rozšíření. V důsledku toho se slapd server stává RPC enginem s kompaktním a všudepřítomným API.
Překrývací moduly (Overlays)
Souhný koncept
Z pravidla jsou LDAP požadavky přijaty frontendem, dekódovány a potom předány backendu ke zpracování. Když backend dokončí požadavek vrátí výsledek frontendu, který pak výsledek pošle na LDAP klienta. Překrývací modul je část kódu, který může být vložený mezi frontend a backend. Je schopný přerušit požadavek a spustit další akce ještě před tím než backend obdrží požadavek, a podobně reaguje na výsledek backendu před tím než ho doručí front endu. Překrývací moduly mají plný přístup k vnitřnímu API slapd a tak mohou vyvolat všechno co může provést frontend nebo backend. Najednou může být využito více překryvných modulů vytvářejících zásobník modulů mezi frontendem a backendem. Překrývací moduly poskytují jednoduchý způsob jak rozšířit funkcionalitu databáze bez nutnosti vytvořit úplně nový backend a umožňují přidat novou funkcionalitu v kompaktním, snadno odladitelném a udržovatelném modulu. Od představení překrývacích modulů v OpenLDAP 2.2 bylo vytvořeno velké množství nových OpenLDAP modulů.
Dostupné překrývací moduly
V současnosti je 21 překryvných modulů v hlavní OpenLDAP distribuci a další 15 modulů vytvořených uživateli OpenLDAP.
Hlavní překryvné moduly obsahují:
- accesslog: logování v další LDAP databázi
- auditlog: logování do čístě textového souboru
- chain: přeruší odkazy a místo toho je zřetězí, je součásní back-ldap
- collect: implementuje X-500 sdílené atributy (Netscape Class of service)
- constraint: omezují přístupné hodnoty pro konkrétní atributy
- dds: dynamic data service – krátkotrvající nebo časově omezené záznamy
- deref: vrací informace o záznamech odkazující na výsledek hledání
- dyngroup: podpora pro jednoduché dynamické skupiny
- dynlist: sofistikovanějíší podpora pro dynamické skupiny a další funkce
- memberof: podpora pro funkci memberOf a podobné atributy
- pcache:vytvaří cache pro vysledky vyhledávaní, hlavně vylepšuje výkon proxy serveru
- refint: referenční integrita
- ppolicy: LDAP Password Policy – kvalita a platnost hesla atd.
- Retcode: sada předem určených návratových kódů, používá se pro odladění clienta
- rwm: přepisující modul, umožňující změny dat v LDAP
- seqmod: serealizuje zápis do individuálních vstupů
- sssvlv: třídění a virtuální Listview na straně serveru
- syncprov: Syncrepl Provider, implementuje hlavní část ujednání o replikacích
- translucent: polotransparentní, průchozí, slouží pro lokální rozšíření dat na proxy serveru
- unique: pro vynucení unikátnosti hodnot atributu uvnitř stromu
- valsort: stará se seřazení atributů a hodnot podle klíče
- Překryvné moduly vytvořené uživateli:
- addpartial: Příjme požadavek a změní ho na modify jesli už cilený prvek již existuje
- allop: vrátí všechny funkční atributy, pro klienty kteří neví jak se na ně dotázat
- autogroup: dynamicky spravované statické skupiny
- cloak: skrývá atributy pokud nejsou explicitně vyžádány vyhledáváním
- denyop: umožnuje zamítnout některé dotazy
- dupent: vrací více hodnotové výsledky jako oddělené záznamy
- lastbind: zaznamenává čásový záznam poslední uživatelovy uspěšné autentifikace
- lastmod: spravuje poslední provedené změny ve stromu
- nops: odfiltruje redundantní změny
- noopsrch: spočítá záznamy které budou vráceny vyhledáváním
- nssov: vrací odpovědi na NSS a PAM dotazy přímo v slapdnahrazje nss-ldap a pam-ldap
- proxyOld: podporuje staré kodování ProxyAuthz používané společností Sun
- smbk5pwd: spravuje Samba a Kreberos hesla
- trace: Loguje LDAP požadavek a odpověd
- usn: aktualizuje sekvenci čísel (pro Microsoft AD ještě nevydáno)
Další moduly
Backendy a překryvné moduly jsou dva nejběžněji využívané typy modulů. Backedy sou většinou vestavěné do binárních souborů slapd, ale můžou být sestaveny jako dynamicky načítané moduly. Překryvné moduly jsou obvykle sestaveny jako dynamicky zaváděný moduly. Navíc slapd podporuje dynamické moduly pro implementaci nové LDAP synaxe, porovnávacích pravidel a rozšířené operace stejně tak moduly pro implementaci vlastních mechanismů řízení přístupu a hashovnání hesel.
OpenLDAP také podporuje SLAPI, je to plugin používaný společnostmi SUN a Netscape/Fedora/Red Hat. V současné verzi je SLAPI framework implementovaný uvnitř překryvného modulu slapd. Zatím co mnoho pluginů napsaných pro SUN a Netscape/Fedora/Red Hat jsou kompatibilní s OpenLDAP , velmi málo členů OpenLDAP komunity používá SLAPI.