1.2 Cos’è LDAP?

LDAP è un acronimo che sta per LIGHTWEIGHT DIRECTORY ACCESS PROTOCOL. Come suggerisce il nome stesso, è un protocollo leggero per accedere ai servizi di directory, basati sul protocollo X.500. LDAP opera su TCP/IP o su altre connessioni orientate ai servizi di trasferimento. I dettagli del protocollo e dell’implementazione sono definiti nel RFC2251:“The Lightweight Directory Access Protocol (v3)” e su altri documenti, come ad esempio le specifiche tecniche nel RFC3377. Prima di LDAP, per accedere a dati memorizzati in una directory X.500 un client doveva supportare il DAP(DIRECTORY ACCESS PROTOCOL),il quale imponeva una notevole penalizzazione delle risorse in gioco in quanto richiedeva l'utilizzo della specifica OSI(Open System Interconnection) che oggi é sostituita largamente dalla suite di protocolli TCP/IP ed altri protocolli. LDAP nasche proprio per sostituire DAP in quanto molto oneroso dal punto di vista dell'impiego delle risorse. LDAP è client-sever: un client LDAP invia una richiesta ad un server LDAP, che processa la richiesta ricevuta, accede eventualmente ad un directory database e ritorna dei risultati al client.

Che tipo di informazioni possono essere memorizzate in una directory?
Il modello di informazioni di LDAP è basato sulle entry. Un’entry è una collezione di attributi aventi un unico nome globale: il Distinguished Name (DN). Il DN è usato per riferirsi ad una particolare entry, senza avere ambiguità.
Ogni attributo dell’entry ha un tipo ed uno o più valori. I tipi di solito sono stringhe mnemoniche, come cn per i common name (i nomi comuni), oppure mail per gli indirizzi di posta elettronica. La sintassi dei valori dipende dai tipi, così ad esempio abbiamo che il valore di cn potrà essere il nome Valentino Rossi, mentre il valore di mail potrà essere valentino@honda.com.

Come sono strutturate le informazioni?
In LDAP, le entry di una directory sono strutturate come in una struttura gerarchica di un albero. L’entry che rappresenta il paese si trova alla radice dell’albero. Al di sotto di essa ci sono quelle che rappresentano stati e organizzazioni nazionali. Seguono poi altri tipi di entry che possono rappresentare organizzazioni, persone, stampanti, documenti, ecc…



- FIGURA 1.1: LDAP directory tree (nomi tradizionali) -


L’albero può essere rappresentato anche usando lo schema del DNS. Questa rappresentazione è la più usata.



- FIGURA 1.2: LDAP directory tree (nomi usati in Internet) -

Come sono indicate le informazioni?
Come abbiamo detto,un’entry è indicata con il suo distinguished name, che è costruito prendendo il nome stesso dell’entry (chiamato Relative Distinguished Name, RDN) e concatenandolo ai nomi delle entry dei suoi predecessori nell’albero. Così ad esempio,, l’entrata per Barbara Jensen(nella figura 1.1) ha come DN partendo dal suo RDN: uid=babs, ou=People, dc=example, dc=com. Il formato dei DN è descritto ampiamente nella RFC2253.

Come si accede alle informazioni?
Il protocollo LDAP definisce servizi per accedere e aggiornare una directory. Fornisce, infatti, operazioni per aggiungere o cancellare un’entry da una directory, modificare un’entry  già esistente, oppure cambiare il nome dell’entry. L’operazione più usata è, però, quella di ricerca di informazioni all’interno della directory. LDAP fornisce un efficiente algoritmo di ricerca.

Come sono protette le informazioni da accessi non autorizzati?
Molti servizi di directory non prevedono protezione per i dati e le informazioni, permettendo a chiunque di accedere a tutti i dati. LDAP, invece, include un meccanismo nel quale un client si può autenticare, o provare la sua identità ad una directory server. LDAP inoltre consente servizi di privacy e di integrità delle informazioni.

Come funziona LDAP?
Il servizio di directory LDAP è
basato su un modello client – server. Uno o più server LDAP contengono i dati che servono a costruire l’albero delle informazioni di una directory, il DIT (Directory Information Tree). La radice di un DIT è una DSA-specific Entry (DSE) e non una parte dei nomi del contesto: ogni server ha differenti attributi e valori nella root DSE. Il client si connette al server e gli chiede informazioni. Il server replica con risposte precise e/o con un puntatore che indica dove il client può accedere ad informazioni addizionali, tipicamente un altro server LDAP. Il client LDAP può comunicare sia con un server X.500 sia con un server LDAP. Nelle due figure successive sono rappresentati i due schemi di comunicazione.



- FIGURA 1.3: Schema di comunicazione con un server X.500

 


- FIGURA 1.4: Schema di comunicazione con un server LDAP –

 

LDAP v2
LDAP con la versione 2 diventa un standard di internet nel 1995, in quanto era stata largamente implementata. In questa versione viene introdotto il concetto di Bind Operation, che è l'operazione principale per fare comunicare client e server LDAP. La Bind Operation è usata per stabilire un sessione tra il client e server che permette al client di autenticarsi sul server. L'autenticazione poteva essere fatta semplicemente inviando username e password in chiaro sul canale. Oppure utilizzando Kerberos per una autenticazione sicura. Dopo essersi autenticato il client può inviare richieste al server.

LDAP v3
Questa versione LDAP viene specificata direttamente su protocolli di trasporto come TCP ed altri, escludendo del tutto il livello di sessione e presentazione della specifica OSI. Vengono introdotti i meccanismi SASL per rendere i servizi offerti dal server più sicuri. Vi è anche la possibilità di estendere il protocollo introducendo nuove operazioni.