LDAP

Martin Kolman, 255628@mail.muni.cz

Obsah

Úvod

Zkratka LDAP neboli Lightweight Directory Access Protocol[1][5] označuje protokol pro přístup k centrálně uloženým informacím prostřednictvím počítačové sítě. Počítačová síť je v tomto případ zastoupena spojením přes protokol TCP a centrálně uložená data představuje strukturovaný adresář.

LDAP vychází z protokolu X.500, je však jednodušší a méně náročný na zdroje - proto se mu někdy přezdívá "X.500 Lite".

Struktura adresáře

Adresář má stromovou strukturu, která určuje jednoznačný klíč k záznamům uloženým v listech.

Zachování integrity adresářového stromu má na starosti tzv. schéma, což je soubor pravidel aplikovaných jak na strukturu stromu, tak hodnoty uložené v listech či porovnávání záznamů.

Adresář může také obsahovat odkazy, které umožňují přesměrování dotazujícího na jiné adresáře, což lze použít k vytvoření geograficky rozsáhlého ad-hoc informačního repositáře.

Protokol

LDAP umožňuje klientským programům přistupovat prostřednictvím serveru k adresáři. Klienti pokládají serveru dotazy, server dotazy nad adresářem vyhodnotí a pošle zpátky odpověď. Komunikace probíhá s několika výjimkami asynchronně, tzn. klient nemusí čekat na vyřízení dotazů a může jich poslat více hned za sebou a server vrací odpovědi v libovolném pořadí. K přiřazení dotazu ke správné odpovědí slouží identifikační čísla obsažená ve zprávách.

Technické informace

Komunikace probíhá na TCP portu číslo 389, starší verze protokolu (LDAPv2) ještě používaly port 636 pro tunelování LDAPU pomocí SSL, od roku 2003 je však tento způsob šifrování společně s protokolem verze 2 oficiálně považován za zastaralý.

LDAP je binární protokol, popsaný pomocí ASN.1[3] (Abstract Syntax Notation One) a přenášený kódováním BER (Basic Encoding Rules). Naštěstí jej však lze prezentovat i v lidsky čitelné formě např. pomocí LDIF[4] (LDAP Data Interchange Format).

Příklad LDIF převzatý z wikipedie:

dn: cn=The Postmaster,dc=example,dc=com
objectClass: organizationalRole
cn: The Postmaster

Autentizace a šifrování

U LDAPu verze 2 bylo zabezpečení často tunelováním veškeré komunikace prostřednictvím SSL. LDAP verze 3 přidává nový příkaz StartTLS, který zahájí komunikaci prostřednictvím TLS. Pro ověření identity serveru (a volitelně i klienta) je použit X.509 certifikát.

Příkazy

StartTLS - Použije TLS rozšíření LDAP verze 3 pro zabezpečení spojení.

Bind - Autentizace a oznámení verze protokolu. Pokud je LDAP používán pouze k autentizaci, bývá zpravidla používán jen a pouze tento příkaz.

Search - Vyhledávání položek v adresáři.

Compare - Ověření zda položka s daným jménem obsahuje danou hodnotu.

Add - Přidá nový záznam.

Delete - Smaže záznam.

Modify - Modifikace záznamu.

Modify Distinguished Name - Vzhledem k tomu, že DN udává jedinečnou cestu k hodnotě záznamu, dojde modifikací DN k přesunu či přejmenování záznamu.

Abandon - Zrušení požadavku s daným ID zprávy. Server tento požadavek nemusí přijmout, tato operace také nevrací žádnou zprávu o úspěšném ukončení operace.

Extended Operation - Obecná operace pro tvorbu nových rozšiřujících operací.

Unbind - Zruší všechny doposud nevyřízené operace a ukončí spojení. Nevrací žádný návratový kód nebo jeho obdobu.

Software[2]

Servery

Umožňují klientským programům přístup k adresáři pomocí počítačové sítě.

OpenLDAP
Nezávislý OSS projekt napsaný v jazyce C, široký repertoár podporovaných platforem (Linux, BSD, AIX, HP-UX, Mac OS X, Solaris, Windows, z/OS). Jedná se vlastně o distribuci zahrnující jak LDAP server tak klientské programy, knihovny a nástroje pro programátory.
389 Directory Server
Vyvinut spolčností Red Hat v rámci Fedory, existuje i placená verze s podporou. Mezi podporované platformy patří Linux, Solaris a HP-UX.
FreeIPA
Projekt sponzorovaný Red Hatem, postaven na 389 Directory Serveru a MIT Kerberos 5, cílem je vytvořit systém podobný např. Active Directory od společnosti Microsoft.
Apache Directory Server
Kompletně napsaný v Javě, podporuje LDAPv3 a Kerberos.
Novell eDirectory
Pro Linux, Solaris, AIX, HP-UX, NetWare a Windows. Podpora nejen LDAP ale i další protokoly (ODBC, SOAP, etc.).
Oracle Internet Directory
Od společnosti Oracle, využívá Oracle databázi, LDAP verze 3.
Sun Java System Directory Server
Pro Solaris, Linux, HP-UX a Windows; zabito Oraclem.
OpenDS
Projekt společnosti Sun Microsystems, napsaný v Javě, vývoj ukončen (Oracle ?) ?
OpenDJ
Původně fork OpenDS iniciovaný Sunem, nyní open source projekt pod Oraclem, LDAPv3. Vývoj zdá se stále ještě probíhá.
Active Directory
Software pro Windows, LDAPv2/3 + Kerberosem + DNS, používá se k vytvoření tzv. "Domény".

Klientské programy

Komunikují s LDAP serverem pomocí počítačové sítě, zadávají dotazy týkající se adresáře a zpracovávají vrácené výsledky.

Ekiga
Program pro VoIP & Video konference, podporuje LDAP adresáře.
Mozilla Thunderbird
Desktopový mailový klient s podporou pro LDAP.
Evolution
Mailový klient + PIM s podporou pro LDAP.
JXplorer
Multiplatformní javový klient umožňující průzkum LDAP adresářů.

Instalace OpenLDAPu na CENTOS

Instalace OpenLDAPu na CENTOS je podrobně popsána v dokumentaci CENTOSu[6], zde pro přehlednost uvedu výtah založený na stručné instalační příručce.[7]

Předpokládejme, že je uživatel přihlášen jako root.

Nainstalujeme potřebné balíky:

yum install openldap openldap-servers openldap-clients
Poté modifikujeme hlavní konfigurační soubory:
nano /etc/openldap/slapd.conf
A spustíme LDAP démona:
service ldap start

Funkčnost můžeme ověřit např. pomocí příkazu ldapssearch:

ldapsearch -x

ldapssearch s parametrem -x by měl vyhledat všechny záznamy a vypsat je v LDIF formátu na standardní výstup.

Příklady použití

Převzato z referátu na LDAP z jara 2011[8].

Připojení uživatele xstepan3 na server můjhost, port 389, s heslem heslo.

ldapbind -h můjhost -p 389 -D "cn=xstepan3" -w heslo

Vyhledání všech položek (filtr objectclass=*), prohledávaná oblast je specifikována pomocí ou=people,dc=acme,dc=com, anonymní autentizace.

ldapsearch -h můjhost -p 389 -b "ou=students,o=muni,dc=cz" "objectclass=*"

Přidání položky z textového souboru novyuzivatel.ldif

ldapadd -h můjhost -p 389 -D "cn=xstepan3" -w heslo -f novyuzivatel.ldif

Smazání položky.

ldapdelete -h můjhost -p 389 -D "cn=xstepan3" -w heslo "uid=uzivatel,ou=students,o=muni,dc=cz"

Literatura