Lightweight Directory Access Protocol

Lightweight Directory Access Protocol (LDAP) definierar ett protokoll och en datamodell för kommunikation med en katalogtjänst. LDAP skapades av Tim Howes, Steve Kille och Wengyik Yeong.

Översikt 
LDAP används för att utföra snabba och effektiva sökningar på katalogservrar. Standarden, som LDAP baseras på (X.500), använder OSI-modellen som protokoll-modell medan LDAP använder TCP/IP. Innan LDAP-servrar började komma, använde LDAP-klienter en LDAP-gateway, som gjorde om LDAP-trafiken till X.500-trafik. Protokollet X.500 har dock förändrats och kan nu användas direkt över TCP/IP. X.500 använder Directory Access Protocol (DAP) för att komma åt X.500-katalogtjänster. LDAP var till en början ett lättviktigt alternativ för att ge åtkomst till X.500-katalogtjänster, men har på senare tid expanderat och blivit lika komplex som X.500.

En klient kopplar upp mot en LDAP-server via TCP-porten 389 (standard). Ett alternativ för att få säker anslutning är att koppla upp via en SSL-tunnel (port 636). Detta sätt utfasades i.o.m. att LDAPv2 officiellt gick i pension (2003). Det nya sättet är att använda LDAPv3 Transport Layer Security (TLS) (operationen Start TLS). Klienten skickar förfrågningarna till servern asynkront medan servern skickar sina svar i turordning.

Dessa operationer kan en klient göra förfrågningar om:
 Start TLS - använder LDAPv3 Transport Layer Security (TLS) för en säker anslutning
 Bind - autentisera och specificera LDAP-protokollversion
 Search - söka och/eller hämta katalogposter
 Compare - testa om en angiven post innehåller ett visst värde
 Add - lägg till en ny post
 Delete - ta bort en post
 Modify - ändra i en post
 Modify Distinguished Name (DN) - flytta eller byt namn på en post
 Abandon - avbryt en tidigare förfrågan
 Extended Operation - generiska operationer används för att definiera andra operationer
 Unbind - stäng ner anslutningen (har inget med 'Bind' att göra)

Servern skickar svar på dessa förfrågningar men kan också skicka ett "Unsolicited Notifications". Meddelandet är inte ett svar på en förfrågan utan skickas till exempel innan anslutningen gör timeout.

Katalogstruktur 
Protokollet ger åtkomst till LDAP-kataloger (även X.500-kataloger):
 En katalog är en DIT (Directory Information Tree), uppbyggt av katalogobjekt
 Ett katalogobjekt består av ett antal attribut (en mängd)
 Varje attribut har ett namn och ett eller flera värden 
 Om ett attribut saknar värde så finns inte attributet överhuvudtaget för objektet
 Varje katalogobjekt har en unik identifierare (Distinguished Name - DN)
 (Kataloguppgifter kan byta katalog. För att tillförlitligt kunna identifiera uppgifterna, kan en UUID användas)

Exempel från LDAP (på engelska), som representeras i LDAP Data Interchange Format (LDIF):

  dn: cn=John Doe,dc=example,dc=com
  cn: John Doe
  givenName: John
  sn: Doe
  telephoneNumber: +1 888 555 6789
  telephoneNumber: +1 888 555 1232
  mail: john@example.com
  manager: cn=Barbara Doe,dc=example,dc=com
  objectClass: inetOrgPerson
  objectClass: organizationalPerson
  objectClass: person
  objectClass: top

dn avser namnet på kataloguppgiften och är inte ett attribut.
cn=John Doe är uppgiftens RDN
dc=example, dc=com är föräldrarnas DN

Attributen består av namn som är lätta att förstå. Till exempel dn står för Distinguished Name (unikt namn), mail står för e-mail och sn står för surname (efternamn).

Operationer 
När klienten skickar en förfrågan, skickas ett meddelandeid med som servern skickar med tillbaka. Servern skickar även med en resultatkod som indikerar om det gått bra, blivit något fel eller något annat specialfall inträffat.

StartTLS 
Operationen StartTLS upprättar en säker anslutning via TLS-protokollet. Detta erbjuder datasekretess och/eller dataintegritet.

Bind (autentisera) 
Servern autentiserar klienten med operationen Bind. Anslutningen bör vara skyddad med TLS, då det finns enkla autentiseringar som skickar DN och lösenord i klartext. Förutom autentisering sätts LDAP-protokollversionen.

Operationen Bind måste vara först i sessionen om LDAPv2 används. Detta behövs inte i LDAPv3.

Search and Compare 
Operationerna sök och jämför används för att söka och läsa poster.

baseObject:
Den DN (Distinguished Name) där sökningen ska starta.

scope:
BaseObject (sök bara efter namngivna posten), singleLevel (poster direkt under roten DN), eller wholeSubtree (hela subträdet med början vid roten DN).

filter:
Hur varje post ska undersökas.

derefAliases:
Om och hur aliasposter ska följas (poster som hänvisar till andra poster).

attributes:
Vilka attribut som ska skickas tillbaka i resultatposterna.

sizeLimit, timeLimit:
Maximala antalet poster och maximala söktiden.

typesOnly:
Skicka tillbaka attributtyperna, inte deras värden

Update Data 
Till denna parameter hör Lägg till (add), Ta bort (delete) och Ändra (modify). För att kunna utföra dessa operationer så måste DN vara specificerat.

Extended operations 
Denna operation används för definiera nya operationer. Hit hör Cancel, Password, Modify och StartTLS.

Abandon 
Operationen skickas tillsammans med ett meddelande-id. Servern avbryter operationen (som har meddelande-id), om den vill. Abandon skickar inget svar tillbaka. Operationen Cancel har definierats att göra samma sak som Abandon och även skicka tillbaka ett svar.

Unbind 
Används för att stänga ner en anslutning. Inget svar skickas tillbaka.

Användning 
LDAP används inom bl.a. tre områden av program:
 För slutanvändare: E-postklienter (till exempel Outlook, Thunderbird)
 För specialister/administratörer: Försäljarspecifika verktyg/program (till exempel JXplorer)
 Serverprodukter: Mail-servrar, webbservrar (till exempel Apache James, Apache HTTP Server)

Referenser

Externa länkar 
 RFC2251 - Protokollspecifikation för LDAP.
 LDAP Wiki

Internetprotokoll