LDAP
Från Rilpedia
LDAP - Lightweight Directory Access Protocol definierar ett kommunikationsprotokoll och en datamodell för att kommunicera med en LDAP-server (katalogserver). LDAP skapades av Tim Howes, Steve Kille och Wengyik Yeong [1].
Innehåll |
Ö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 specifiera 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 t.ex. innan anslutningen gör timeout.
Katalogstruktur
Protokollet ger åtkomst till LDAP-kataloger (även X.500-kataloger):
- En katalog är en DIT (Directory Information Tree)
- En kataloguppgift består av ett antal attribut (en mängd)
- Varje attribut har ett namn och ett eller flera värden
- Varje attribut 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å. T.ex. 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
The client gives each request a positive Message ID, and the server response has the same Message ID. The response includes a numeric result code which indicates success, some error condition or some other special cases. Before the response, the server may send other messages with other result data - for example each entry found by the Search operation is returned in such a message.
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 specifierat.
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änding
LDAP används inom bl.a. tre områden av program: [2]
- För slutanvändare: E-mail klienter (t.ex. Outlook, Thunderbird)
- För specialister/administratörer: Försäljarspecifika verktyg/program (t.ex. JXplorer)
- Serverprodukter: Mail-servrar, Web-servrar (t.ex. Apache James, Apache HTTP Server)
Referenser
- ↑ RFC1777
- ↑ 2,0 2,1 Apache Directory - Some Background. Directories, directory services and LDAP
- ↑ LDAP schema design
- ↑ IESG-Announcements