LDAP (Lightweight Directory Access Protocol è un protocollo standard che permette di gestire degli annuari, cioè di accedere a dei datainfo sugli utenti di una rete attraverso dei protocolli TCP/IP.
I datainfo sono generalmente relativi a degli utenti, ma possono essere talvolta usati con altri fini come per la gestione dell'harware in un'azienda. Il protocollo LDAP, sviluppato nel 1993 dall'università del Michigan, aveva come scopo di soppiantare il protocollo DAP (che serviva per accedere al servizio dell'annuario X.500 dell'OSI), integrandolo al seguito TCP/IP. Partendo dal 1995, LDAP è diventato un annuario nativo (standalone LDAP), affinché non servisse più unicamente per accedere a degli annuari di tipo X500. LDAP è quindi una versione alleggerita del protocollo DAP, da cui deriva il suo nome di Lightweight Directory Access Protocol.
Il protocollo LDAP definisce il metodo d'acceso ai dati sul server a livello del client, e non il modo in cui le informazioni vengono memorizzate. Il protocollo LDAP è attualmente alla versione 3 e è stato normalizzato dall'IETF (Internet Engineering Task Force). Così, esiste un RFC per ogni versione del LDAP, che costituisce un documento di riferimento:
RFC 1777 per LDAP v.2 standard;
RFC 2251 per LDAP v.3 standard.
Così LDAP fornisce all'utente dei metodi che gli permettono di connettersi, disconnettersi, cercare delle informazioni, paragonare delle informazioni, inserire delle entry, modificare degli entry,cancellare degli entry.
D'altra parte il protocollo LDAP (nella sua versione 3) propone dei meccanismi di codificazione (SSL, ecc.) e di autenticazione (SASL) che permettono di sicurizzare l'accesso alle informazioni memorizzate nel datainfo.
LDAP presenta le informazioni sotto forma di un'arborescenza di informazioni gerarchica chiamata DIT (Directory Information Tree), nella quale le informazioni, dette dati (o ancora DSE, Directory Service Entry), sono rappresentate sotto forma di rami. Un ramo posto alla radice di una ramificazione è detto radice o suffisso (in inglese root entry).
Ogni immissione dell'annuario LDAP corrisponde ad un oggetto astratto o reale (ad esempio una persona, un oggetto materiale, dei parametri, ecc.). Ogni entry è costituita da un insieme di coppie chiave/valore dette attributi:
Ogni entry è costituita da un insieme di attributi (coppie chiave/valore) che permettono di caratterizzare l'oggetto definito dall'entry. Esistono due tipi di attributi:
Gli attributi normali, si tratta degli attributi abituali (cognome, nome, ecc.) che caratterizzano l'oggetto;
Gli attributi operativi, questi sono degli attributi ai quali solo il server può accedere per manipolare i dati dell'annuario (date di modifica, ecc.).
Un'entry è indicizzata da un nome distinto (DN, distinguished name) che permette di identificare in maniera univoca un elemento dell'arborescenza.
Un DN si costruisce prendendo il nome dell'elemento, detto Relative Distinguished Name (RDN, cioè il percorso dell'entry rispetto ad uno dei suoi vicini), e aggiungendogli l'insieme dei nomi delle entry vicine. Si tratta di usare una serie di coppie chiave/valore che gli permettono di individuare un'entry in modo univoco. Ecco una serie di chiavi generalmente usate:
uid (userid), si tratta di un identificativo unico obbligatorio;
cn (common name), si tratta del cognome della persona;
givenname, si tratta del nome della persona;
sn (surname), si tratta del soprannome della persona;
o (organization), si tratta dell'azienda della persona;
u (organization unit), si tratta del servizio dell'azienda nel quale la persona lavora;
mail, si tratta dell'indirizzo di posta elettronica della persona;
Nonché Distinguished Name sarà nella forma:
uid=mrossi,cn=rossi,givenname=mario
Il Relative Distinguished Name essendo qui"uid=mrossi".
Quindi, si dice schema l'insieme delle definizioni di oggetti e attributi che un server LDAP può gestire. Questo permette ad esempio di definire se un attributo può avere uno o più valori. D'altra parte, un attributo chiamato object class permette di definire gli attributi sia obbligatori che facoltativi.
LDAP fornisce un insieme di funzioni (procedure) per effettuare delle richieste sui dati per cercare, modificare, cancellare delle entry nelle cartelle. Ecco una lista delle principali operazioni che LDAP può effettuare:
Operazione | Descrizione |
---|---|
Abandon | Abbandona l'operazione precedentemente inviata al server |
Add | Aggiunge un'entry alla cartella |
Blind | Inizia una nuova sessione sul server LDAP |
Compare | Paragona le entry di una cartella secondo dei criteri |
Delete | Cancella un'entry da una cartella |
Extended | Effettua delle operazioni estese |
Rename | Modifica il nome di un' entry |
Search | Ricerca delle entry in una cartella |
Unbind | Termina una sessione sul server LDAP |
LDAP fornisce un formato di scambio (LDIF, Lightweight Data Interchange Format) che permette d'importare e d'esportare i dati da un annuario con un semplice file di testo. La maggior parte dei server LDAP supporta questo formato permettendo una grande interoperabilità fra loro. La sintassi di questo formato è la seguente:
[<id>]
dn: <distinguished name>
<attribut> : <valore>
<attribut> : <valore>
...
In questo file, id è facoltativo, si tratta di un intero positivo che permette di identificare l'entry nel database.
Ogni nuova entry deve essere separata dalla definizione dell'entry precedente attraverso un salto di riga (riga vuota);
È possibile definire un attributo su più righe cominciando le righe seguenti da uno spazio a con una tabulazione;
È possibile definire più valori per un attributo ripetendo la stringa nome:valore su righe separate;
Quando il valore contiene un carattere speciale (nome stampabile, uno spazio o :), l'attributo deve essere seguito da :: poi dal valore codificato in base 64.
Foto: © Pixabay.