From Wikipedia, the free encyclopedia
OpenLDAP Software je v informatice název volně šiřitelné implementace protokolu LDAP (Lightweight Directory Access Protocol). OpenLDAP je uvolněn pod svojí vlastní BSD licencí nazývanou OpenLDAP public Licence. LDAP je protokol nezávislý na platformě. Několik linuxových distribucí obsahuje OpenLDAP, ale najdeme ho též na BSD systémech stejně tak jako na systémech AIX, Android, HP-UX, Mac OS X, Solaris, Windows NT (Windows 2000, XP, Vista, 7 atd) .
Vývojář | OpenLDAP Foundation |
---|---|
Aktuální verze | 2.6.8 (21. května 2024) |
Operační systém | multiplatformní software |
Vyvíjeno v | C |
Typ softwaru | svobodný software |
Licence | OpenLDAP Public License Version 2.8 |
Web | www |
Některá data mohou pocházet z datové položky. |
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 probíhal dlouhodobý projekt vývoje podpory 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žitých a aktivních přispěvatelů např. Luke Howard, Hallvard Furuseth, Quanah Gibson-Mount a Gavin Henry.
OpenLDAP má tři hlavní komponenty:
Navíc OpenLDAP projekt obsahuje několik podprojektů:
Struktura OpenLDAP serveru (slapd, samostatný LDAP démon) se rozdělila na dvě části. První částí je frontend, který zajišťuje přístup na síť a rozumí protokolu LDAP. Druhý je backend který se stará pouze o datové úlož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ěňovaly. Chceme-li být přesní, „backend“ je třída implementující rozhraní úlož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žství instancí každého z těchto backendu (databází).
V současnosti existuje 16 různých backendů dodávaných s distribucí LDAP. Mnoho dalších backendů je vyvíjeno a spravováno třetími stranami. Standardní backendy jsou volně rozdělené do tří kategorií.
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ího 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 jazykům a tak poskytují neomezené možnosti přizpůsobení a rozšíření. V důsledku toho se slapd server stává RPC enginem s kompaktním a všudepřítomným API.
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čí frontendu. 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ů.
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í:
Backendy a překryvné moduly jsou dva nejběžněji využívané typy modulů. Backedy jsou většinou vestavěné do binárních souborů slapd, ale mohou 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 syntaxe, porovnávacích pravidel a rozšířené operace stejně tak moduly pro implementaci vlastních mechanismů řízení přístupu a hašová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.
OpenLDAP podporuje replikaci za použití Content Synchronization jak to bylo specifikováno v RFC 4533. Tato specifikace je také nazývána „syncrepl“. Základní aplikace navíc podporuje doplněk známý jako delta-syncrepl. Tento doplněk byl implementovány, aby podporoval multi-master replikaci.
Základní synchronizační operace je popsána v RFC 4533. Protokol je definován tak, že nevyžaduje trvalou databázi změn. Soubor změn je zaznamenán skrze změnu sekvenčního čísla (change sequence number - CSN), informaci uloženou v každém vstupu, optimalizovanou skrze volitelnou přihlašovací relaci (session log), což je zvláště užitečné pro dohledání nedávných smazání. Modelová operace vypadá tak, že replikační klient (uživatel) odešle "content synchronizing search" (synchronizující vyhledávání obsahu) replikačnímu serveru (poskytovateli). Uživatel může v tomto vyhledávání poskytnout cookie (obzvláště pokud byla dříve v synchronizaci s poskytovatelem). V OpenLDAP za implementace RFC 4533 tato cookie zahrnuje poslední CSN, které byly přijaty od poskytovatele (nazývající se contextCSN)
Poskytovatel pak vrací výsledky vyhledávání jako (viz optimalizace níže, synchronizované info reakce) současné (nezměněné záznamy se používají pouze v prezentační fázi obnovovací fáze, bez atributů), přidaně modifikované (reprezentované v obnovovací fázi jako přidané se všemi současnými atributy), nebo odstraněné záznamy (bez atributů), aby uživatele dostaly do synchronizovaného stavu na základě toho, co je známo přes jeho cookie. Pokud cookie chybí, nebo indikuje, že uživatel není synchronizován, potom poskytovatel v obnovovací fázi odešle doplněk pro každý vstup. V ideálním případě obnovovací fáze odpovědi obsahuje pouze odstraňovací (delete) fázi s malou sadou doplňků (včetně těch, které představují aktuální výsledky změn) a odstranění, která proběhla od poslední synchronizace s poskytovatelem. Nicméně, vzhledem k omezenému stavu relace (není trvalá) udržovanému u poskytovatele může být vyžadována prezentační fáze zahrnující zejména všechny nezměněné záznamy jako prostředek (neefektivní) sloužící k implikování toho, co bylo smazáno u poskytovatele od poslední synchronizace.
Vyhledávání lze provést buď pomocí obnovení (refresh), nebo pomocí refreshAndPersist mode, který určí, jaké fáze nastanou. Obnovovací fáze nastane vždy jako první. Během obnovovací fáze mohou nastat dvě fáze: Prezenční a odstraňovací (present and delete) kdy prezenční nastane vždy před odstraňovací. Tyto fáze jsou vymezeny skrze synchronizovanou info reakci. Ta specifikuje, která fáze je dokončena. Refresh a persist etapy jsou taktéž vymezeny prostřednictvím synchronizované info reakce. Volitelná optimalizace, jež více kompaktně představuje skupinu záznamů, které mají být prezentovány nebo smazány používá synchronizovanou info reakci obsahující syncIdSet, který definuje seznam entryUUID hodnot těch vstupů.
Prezenční fáze se od odstraňovací fáze liší následovně. Záznamy prezentující nezměněné záznamy mohou být navráceny pouze v prezenční fázi. Záznamy, jež mažou záznamy, mohou být poskytnuty pouze v odstraňovací fázi. V obou fázích mohou být vráceny přidané záznamy (zahrnující doplňky, které reprezentují všechny současné atributy změněných záznamů). Na konci prezentační fáze není každý záznam, který uživatel má a který nebyl definován v žádném dodatečném záznamu nebo v present response během prezentační fáze, obsažen u poskytovatele a tak musí být u uživatele smazán, aby se uživatel mohl synchronizovat s poskytovatelem.
Jakmile začne persist etapa, poskytovatel odešle výsledky hledání, které označí doplňky, modifikace a smazání záznamů (nezměněné údaje označeny nebudou) provedená od ukončení refresh fáze. Persist etapa trvá neurčitou dobu, což znamená, že hledání nemá finální „done“ odpověď. Naopak v refresh režimu nastane pouze refresh fáze a ta je ukončena „done“ reakcí, což zároveň ukončí prezentační nebo odstraňovací fázi (podle toho, která zrovna byla aktivní)
Tento protokol vede trvalou databázi zapsaných přístupů (změn) a může představovat jednotlivé změny přesně (to znamená, pouze atributy, které se změnily). Je stále postaven na standardní syncrepl specifikaci, která vždy posílá změny jako kompletní záznamy. Ale v delta-syncrepl jsou přenášené záznamy zasílány z log databáze, kde je každá změna v hlavní databázi zapsána jako log záznam. Log záznamy jsou zaznamenávány pomocí LDAP Log Schema.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.