Lightweight Directory Access Protocol, ali LDAP (izgovojava /ɛl dæp/), je programski protokol za poizvedovanje in spreminjanje imeniških storitev, ki teče preko TCP/IP.

Imenik je niz predmetov z atributi organiziran na logični in hierarhični način. Preprost primer je telefonski imenik, ki je sestavljen iz seznama imen (bodisi osebe ali organizacije) organizirana po abecednem redu, kjer ima vsako ime, naslov in telefonsko številko povezano z njim.

Imenik LDAP drevesa pogosto odraža različna politične, geografske in/ali organizacijske meje, odvisno od izbranega modela. Pri postavitvi LDAP, se danes pogosto uporablja imena sistema domenskih imen (DNS) za imenovanje najvišje ravni hierarhije. Globlje znotraj imenika se morda pojavljajo vpisi, ki predstavljajo ljudi, organizacijske enote, tiskalnike, dokumente, skupine ljudi ali karkoli drugega, kar predstavlja določen vpis v drevo (ali več vpisov).

Njegova trenutna različica LDAPv3, je določena v seriji več Internet Engineering Task Force (IETF) zahtevah za mnenja (RFC), kot je podrobno opisano v RFC 4510.

Izvor in vplivi uredi

Telekomunikacijske družbe so uvedle koncept imeniških storitev za informacijske tehnologije in računalniška omrežja, saj je njihovo razumevanje imeniških zahtev bilo po okrog 70 letih razvoja in upravljanja telefonskih imenikov dobro razvito. Vrhunec tega dela je celovita specifikacija X.500, zbirka protokolov, ki jih je izdala Mednarodna telekomunikacijska zveza (ITU) v osemdesetih.

Imeniške storitve X.500 so bile tradicionalno dostopne prek protokola X.500 za dostop do imenika (DAP), ki je zahteval sklad protokolov Open Systems Interconnection (OSI). LDAP je bil prvotno namenjen za lahki alternativni protokol za dostop do storitev imenika X.500 prek enostavnejšega (in zdaj razširjenega) TCP/IP protokola. Ta model dostopanja do imenika je bil izposojen od DIXIE in Directory Assistance Service protokolov.

Samostojni LDAP imeniški strežniki so kmalu sledili, kot tudi imeniški strežniki, ki podpirajo tako DAP kot LDAP. Slednji je postal priljubljen v podjetjih, saj LDAP odpravlja potrebo za uvedbo omrežja OSI. Danes se lahko X.500 imeniški protokoli, vključno z DAP uporabljajo tudi neposredno prek TCP/IP.

Razvoj protokola so okrog leta 1993 začeli Tim Howes iz University of Michigan, Steve Kille iz Isode Limited in Wengyik Yeong iz Performance Systems International. Nadaljnji razvoj je prevzel Internet Engineering Task Force.

V zgodnjih fazah inženiringa je bil LDAP znan kot Lightweight Directory Browsing Protocol ali LDBP. Z razširitvijo področja uporabe protokola je bil preimenovan tako, da ne vključuje le brskanja imenika in funkcij za iskanje temveč tudi posodobitve imenika.

LDAP je vplival na nadaljnje internetne protokole, vključno novejše različice X.500, XML Enabled Directory (XED), Directory Service Markup Language (DSML), Service Provisioning Markup Language (SPML) in Service Location Protocol (SLP).

Pregled protokola uredi

Klient prične LDAP sejo ko se poveže na LDAP strežnik, ki mu rečemo Directory System Agent (DSA), po navadi na TCP vrata 389. Nato klient pošlje zahtevek za določeno operacijo na LDAP strežnik, na katerega strežnik odgovori. Z nekimi izjemami lahko klient pošlje naslednji zahtevek še preden dobi odgovor, strežnik pa mu lahko odgovori v kakršnemkoli vrstnem redu.

Klient lahko pošlje zahtevke za naslednje operacije:

  • Start TLS — uporabi LDAPv3 Transport Layer Security (TLS) za varno povezavo
  • Bind — avtentificiraj in določi verzijo LDAP protokola
  • Search — išči ter pridobi imeniške vnose
  • Compare — preveri če vnos vsebuje dano vrednost za atribut
  • Add - dodaj vnos
  • Delete - izbriši vnos
  • Modify - spremeni vnos
  • Modify Distinguished Name (DN) — spremeni DN, s tem ga prestavi v drugo vejo imenika ali le preimenuje
  • Abandon — prekliči prejšnji zahtevek
  • Unbind — prekini povezavo

Strežnik lahko pošlje tudi "Nezahtevana sporočila", ki niso odziv na zahtevek, npr. preden se seja časovo izteče in prekine povezava.

Struktura imenika uredi

Protokol dostopa do imenikov LDAP, ki so povzeti po X.500 modelu iz leta 1993:

  • Imenik je drevo imeniških vnosov.
  • Vnos sestavlja skupek atributov.
  • Atribut ima ime (tip atributa ali opis atributa) in eno ali več vrednosti. Atributi so določeni v shemah.
  • Vsak vnos ima unikaten identifikator: njegov Distinguished Name (DN). Ta pa je sestavljen iz Relative Distinguished Name (RDN), ki je lahko zgrajen iz nekaterih atributov vnosa, ter iz DN nadrejenega v imeniku. Torej lahko gledamo na DN kot polna pot do neke datoteke, ter na RDN kot relativno ime datoteke v imeniku.

Zavedati se moramo, da se lahko DN spreminja skozi življenjsko dobo vnosa, saj ga lahko premikamo drugam po drevesu. Da bi zanesljivo in nezamenljivo poimenovali vnos lahko med atribute dodamo unikaten identikifikator (Universally Unique Identifier, UUID).

Vnos lahko izgleda takole, ko se ga predstavi v formatu LDAP Data Interchange Format (LDIF) (LDAP sam je binarni protokol):

 dn: cn=Janez Novak,dc=example,dc=com
 cn: Janez Novak
 givenName: Janez
 sn: Novak
 telephoneNumber: +386 1 234 5678
 telephoneNumber: +386 1 123 1234
 mail: janez@example.com
 manager: cn=Maja novak,dc=example,dc=com
 objectClass: inetOrgPerson
 objectClass: organizationalPerson
 objectClass: person
 objectClass: top

dn je ime vnosa; ni ne atribut vnosa, niti ni del vnosa. "cn=Janez Novak" je RDN vnosa in "dc=example,dc=com" je DN nadrejenega vnosa, kjer dc pomeni "Domain Component" komponenta domene. Druge vrstice pa kažejo atribute v vnosu. imena atributov so po navadi okrajšave, npr. "cn" za "common name", "mail" za e-mail naslov in "sn" za priimek.

Zunanje povezave uredi