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.[1]

Ö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.[2] 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.[3]

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).[4] 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:[2]

  • 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