Prima di lavorare con LDAP, è necessario comprendere una serie di concetti importanti. Questa pagina descrive una serie di importanti strutture e idee LDAP.
Server di directory
Un server di directory (più tecnicamente indicato come un agente di directory server, un agente di sistema di directory o un DSA) è un tipo di database di rete che memorizza le informazioni rappresentate come alberi di voci. Questo è diverso da un database relazionale, che utilizza tabelle composte da righe e colonne, quindi i server di directory possono essere considerati un tipo di database NoSQL (anche se i server di directory esistono da molto più tempo del termine NoSQL).
Sebbene praticamente tutti i server di directory supportino LDAP, alcuni server offrono il supporto per protocolli aggiuntivi che possono essere utilizzati per interagire con i dati. Alcuni di questi protocolli includono X.500 (l’originale Directory Access Protocol, per il quale LDAP è una versione molto più leggera), protocolli di servizio di denominazione come DNS e NIS, protocolli basati su HTTP come DSML e SCIM e protocolli proprietari come NDS di Novell.
Vedere sulla pagina ufficiale di LDAP altri Server di Directory più popolari.
Voci
Una voce LDAP è una raccolta di informazioni su un’entità. Ogni voce è composta da tre componenti principali: un nome distinto, una raccolta di attributi e una raccolta di classi di oggetti. Ciascuno di questi è descritto più dettagliatamente di seguito.
DN e RDN
Il nome distinto di una voce, spesso indicato come DN, identifica in modo univoco tale voce e la sua posizione nella gerarchia DIT (Directory Information Tree). Il DN di una voce LDAP è molto simile al percorso di un file su un filesystem.
Un DN LDAP è composto da zero o più elementi denominati nomi distinti relativi o RDN. Ogni RDN è composto da una o più (di solito solo una) coppie valore-attributo. Ad esempio, “uid = john.doe” rappresenta un RDN composto da un attributo denominato “uid” con un valore di “john.doe”. Se un RDN ha più coppie attributo-valore, sono separate da segni più, come “givenName = John + sn = Doe”.
Lo speciale nome distinto composto da zero RDN (e quindi ha una rappresentazione di stringa che è solo una stringa vuota) è talvolta chiamato “DN null” e fa riferimento a un tipo speciale di voce chiamato DSE radice che fornisce informazioni sul contenuto e le capacità di il server di directory. Pervedere DIT e LDAP Root DSE ulteriori informazioni sulla voce DSE radice,.
Per i DN con più RDN, l’ordine degli RDN specifica la posizione della voce associata nel DIT. Gli RDN sono separati da virgole e ogni RDN in un DN rappresenta un livello nella gerarchia in ordine decrescente (ovvero, avvicinandosi alla radice dell’albero, che viene chiamato contesto dei nomi). Cioè, se rimuovi un RDN da un DN, ottieni il DN della voce considerata il padre del DN precedente. Ad esempio, il DN “uid = nostro.esempio, ou = People, dc = esempio, dc = com” ha quattro RDN, con il DN principale “ou = People, dc = esempio, dc = com”.
Vedere la DN e RDN LDAP paginaper una descrizione più approfondita di DN, RDN e relative rappresentazioni di stringa.
Attributi
Gli attributi contengono i dati per una voce. Ogni attributo ha un tipo di attributo, zero o più opzioni di attributo e una serie di valori che comprendono i dati effettivi.
I tipi di attributo sono elementi dello schema che specificano come gli attributi devono essere trattati dai client e dai server LDAP. Tutti i tipi di attributo devono avere un identificatore di oggetto (OID) e zero o più nomi che possono essere utilizzati per fare riferimento ad attributi di quel tipo. Devono inoltre avere una sintassi degli attributi, che specifica il tipo di dati che possono essere memorizzati negli attributi di quel tipo, e un insieme di regole di corrispondenza, che indicano come devono essere eseguiti i confronti con i valori degli attributi di quel tipo. I tipi di attributo possono anche indicare se un attributo può avere più valori nella stessa voce e se l’attributo è inteso per contenere dati utente (un attributo utente) o è utilizzato per il funzionamento del server (un attributo operativo). Gli attributi operativi vengono generalmente utilizzati per la configurazione e / o le informazioni sullo stato.
Le opzioni degli attributi non vengono utilizzate molto spesso, ma possono essere utilizzate per fornire alcuni metadati su un attributo. Ad esempio, le opzioni degli attributi possono essere utilizzate per fornire versioni diverse di un valore in lingue diverse.
Vedere Comprensione dello schema LDAP per ulteriori informazioni su tipi di attributi, sintassi, regole di corrispondenza e altri tipi di elementi dello schema.
Classi di oggetti
Le classi di oggetti sono elementi dello schema che specificano raccolte di tipi di attributi che possono essere correlati a un particolare tipo di oggetto, processo o altra entità. Ogni voce ha una classe di oggetti strutturali, che indica che tipo di oggetto rappresenta una voce (ad esempio, se si tratta di informazioni su una persona, un gruppo, un dispositivo, un servizio, ecc.) E può anche avere zero o più oggetti ausiliari classi che suggeriscono caratteristiche aggiuntive per quella voce.
Come i tipi di attributo, le classi di oggetti devono avere un identificatore di oggetto, ma possono anche avere zero o più nomi. Le classi di oggetti possono anche elencare una serie di tipi di attributi obbligatori (in modo che qualsiasi voce con quella classe di oggetti deve includere anche quegli attributi) e / o una serie di tipi di attributi opzionali (in modo che qualsiasi voce con quella classe di oggetti possa facoltativamente includere quegli attributi) .
Vedere Comprensione dello schema LDAP per ulteriori informazioni sulle classi di oggetti e altri tipi di elementi dello schema.
Identificatori di oggetto (OID)
Un identificatore di oggetto (OID) è una stringa utilizzata per identificare in modo univoco vari elementi nel protocollo LDAP, nonché in altre aree del computer. Gli OID sono costituiti da una sequenza di numeri separati da punti (ad esempio, “1.2.840.113556.1.4.473” è l’OID che rappresenta il controllo della richiesta di ordinamento lato server). In LDAP, gli OID vengono utilizzati per identificare elementi come elementi dello schema (come tipi di attributi, classi di oggetti, sintassi, regole di corrispondenza, ecc.), Controlli e richieste e risposte estese. Nel caso degli elementi dello schema, potrebbero essere presenti anche nomi di facile utilizzo che possono essere utilizzati al posto degli OID.
Vedere Comprensione dello schema LDAP per una discussione sull’uso degli OID nello schema. Consultare la LDAP OID Reference Guide per un elenco di una serie di OID utilizzati in LDAP.
Filtri di ricerca
I filtri di ricerca vengono utilizzati per definire i criteri per identificare le voci che contengono determinati tipi di informazioni. Esistono diversi tipi di filtri di ricerca: I filtri di
- presenza possono essere utilizzati per identificare le voci in cui un attributo specificato ha almeno un valore.
- I filtri di uguaglianza possono essere utilizzati per identificare le voci in cui un attributo specificato ha un valore particolare.
- I filtri di sottostringa possono essere utilizzati per identificare le voci in cui un attributo specificato ha almeno un valore che corrisponde a una determinata sottostringa.
- È possibile utilizzare filtri maggiore o uguale per identificare le voci in cui un attributo specificato ha almeno un valore considerato maggiore o uguale a un determinato valore.
- È possibile utilizzare filtri minore o uguale per identificare le voci in cui un attributo specificato ha almeno un valore considerato inferiore o uguale a un determinato valore.
- È possibile utilizzare filtri di corrispondenza approssimativi per identificare le voci in cui un attributo specificato ha un valore che è approssimativamente uguale a un determinato valore. Si noti che non esiste una definizione ufficiale di “approssimativamente uguale a” e quindi questo comportamento può variare da un server all’altro. Alcuni server utilizzano un algoritmo “suona come” come una delle varianti Soundex o Metaphone.
- È possibile utilizzare filtri di corrispondenza estensibili per fornire tipi di corrispondenza più avanzati, compreso l’uso di regole di corrispondenza personalizzate e / o attributi di corrispondenza all’interno del DN di una voce.
- I filtri AND possono essere utilizzati per identificare le voci che corrispondono a tutti i filtri incapsulati all’interno dell’AND.
- I filtri OR possono essere utilizzati per identificare le voci che corrispondono ad almeno uno dei filtri incapsulati all’interno dell’OR.
- I filtri NOT possono essere usati per negare il risultato del filtro incapsulato (cioè, se un filtro corrisponde a una voce, allora un filtro NOT che incapsula quel filtro corrispondente non corrisponderà alla voce, e se un filtro non corrisponde a una voce, allora un NOT filtro che incapsula quel filtro non corrispondente corrisponderà alla voce).
La logica utilizzata per eseguire la corrispondenza è incapsulata nelle regole di corrispondenza, specificate nelle definizioni del tipo di attributo. Regole di abbinamento diverse possono utilizzare una logica diversa per effettuare la determinazione. Ad esempio, la regola di corrispondenza caseIgnoreMatch ignorerà le differenze nelle lettere maiuscole quando si confrontano due stringhe, mentre la regola di corrispondenza caseExactMatch non lo farà. Molte regole di corrispondenza sono specifiche per determinati tipi di dati (ad esempio, la regola di corrispondenza distinguishedNameMatch prevede di operare solo su valori che sono DN e può fare cose come ignorare spazi insignificanti tra componenti DN e RDN, ignorare le differenze nell’ordine degli elementi in un RDN multivalore , eccetera.).
Vedere la Filtri LDAP paginaper una discussione più completa sui filtri LDAP e le loro rappresentazioni di stringa. Vedere la Operazione di ricerca LDAP paginaper ulteriori informazioni sulle operazioni di ricerca. Vedere la Comprensione dello schema LDAP paginaper ulteriori informazioni sulla corrispondenza delle regole e altri elementi dello schema.
DN di base e ambiti
Tutte le richieste di ricerca includono un elemento DN di base, che specifica la parte del DIT in cui cercare le voci corrispondenti e un ambito, che specifica la quantità di quella sottostruttura da considerare. Gli ambiti di ricerca definiti includono:
- L’ambito baseObject (spesso indicato semplicemente come “base”) indica che deve essere considerata solo la voce specificata dal DN della base di ricerca.
- L’ambito singleLevel (spesso indicato come “uno” o “onelevel”) indica che devono essere considerate solo le voci immediatamente al di sotto del DN di base di ricerca (ma non la voce di base stessa).
- L’ambito di wholeSubtree (spesso indicato come “sub”) indica che la voce specificata come DN di base di ricerca e tutte le voci sottostanti (a qualsiasi profondità) devono essere considerate.
- L’ambito subordinateSubtree indica che devono essere considerate tutte le voci al di sotto del DN della base di ricerca (a qualsiasi profondità), ma non la voce della base di ricerca stessa.
Vedere l’ operazione di ricerca LDAP per ulteriori informazioni sui componenti e sul comportamento di un’operazione di ricerca LDAP.
Modifiche e tipi di modifica
I client LDAP possono utilizzare una richiesta di modifica per apportare modifiche ai dati memorizzati in una voce. Una richiesta di modifica specifica il DN della voce da aggiornare e un elenco delle modifiche da applicare a quella voce. Ogni modifica ha un tipo di modifica, un nome di attributo e una serie facoltativa di valori di attributo.
I tipi di modifica definiti includono:
- Il tipo di modifica aggiunta indica che uno o più valori di attributo devono essere aggiunti alla voce. Può essere utilizzato per aggiungere un attributo completamente nuovo o per aggiungere nuovi valori a un attributo esistente. È sempre necessario specificare almeno un valore di attributo per un tipo di modifica aggiunta.
- Il tipo di modifica di eliminazione indica che uno o più valori di attributo, o un intero attributo, devono essere rimossi dalla voce. Se una modifica di eliminazione include uno o più valori di attributo, verranno rimossi solo quei valori. Se una modifica di eliminazione non include alcun valore, l’intero attributo verrà rimosso.
- Il tipo di modifica di sostituzione indica che l’insieme di valori per un attributo specificato deve essere sostituito con un nuovo insieme (che può includere o meno valori già presenti nella voce). Se una modifica di sostituzione ha uno o più valori di attributo, tali valori verranno utilizzati per l’attributo associato. Se una modifica di sostituzione non ha alcun valore, l’attributo associato verrà rimosso dalla voce, se esistente.
- Il tipo di modifica dell’incremento indica che il valore intero per l’attributo specificato deve essere aumentato dell’importo specificato (o diminuito se il valore dell’incremento è negativo).
Vedere L’operazione di modifica LDAP per ulteriori informazioni sui componenti e sul comportamento di un’operazione di modifica LDAP.
URL LDAP
Un URL LDAP incapsula una serie di informazioni che possono essere utilizzate per fare riferimento a un server di directory, una voce specifica in un server di directory o criteri di ricerca per identificare le voci corrispondenti all’interno di un server di directory. Gli URL LDAP vengono utilizzati più di frequente nei riferimenti (come descritto di seguito) e in alcune API client possono essere utilizzati per specificare alcune proprietà per stabilire connessioni.
Vedere la pagina ufficiale degli URL LDAP per ulteriori informazioni sui contenuti e sulla rappresentazione di stringa degli URL LDAP.
Controlli
Un controllo è un’informazione che può essere inclusa in una richiesta o risposta LDAP per fornire ulteriori informazioni su quella richiesta o risposta, o per cambiare il modo in cui dovrebbe essere interpretata dal server (nel caso di una richiesta) o cliente (in caso di risposta). Ad esempio, il controllo della richiesta di ordinamento lato server può essere incluso in una richiesta di ricerca per indicare che il server deve ordinare le voci corrispondenti in un modo particolare prima di inviarle al client.
I controlli LDAP hanno tre elementi:
- Un identificatore di oggetto (OID) che identifica in modo univoco il tipo di controllo. Questo è un elemento obbligatorio.
- Una criticità. Si tratta di un flag che indica come dovrebbe comportarsi il server se non riconosce un controllo di richiesta fornito o se non può supportare il controllo nel contesto in cui è stato richiesto. Una criticità di “true” indica che il controllo è una parte critica della richiesta e che il server dovrebbe rifiutare la richiesta se non può supportare il controllo. Una criticità di “false” indica che il controllo è più una parte “piacevole da avere” della richiesta e che se il server non può supportare il controllo, allora dovrebbe andare avanti ed elaborare l’operazione come se il controllo non fosse stato incluso. La criticità non entra in gioco se il server supporta il controllo nel contesto della richiesta.
- Un valore facoltativo, che può fornire informazioni aggiuntive da utilizzare nell’elaborazione del controllo. Ad esempio, per un controllo della richiesta di ordinamento lato server, il valore del controllo deve specificare l’ordinamento desiderato. La codifica per un controllo varia in base al tipo di controllo.
Referral
Un referral è un tipo di risposta LDAP che indica che il server non è stato in grado di elaborare l’operazione richiesta, ma suggerisce che la richiesta potrebbe avere successo se la provi da qualche altra parte (ad esempio, in un server diverso e / o in una posizione diversa in il DIT). I riferimenti possono essere restituiti per una serie di motivi, tra cui:
- Il client ha richiesto un’operazione che mirava a una voce che non esisteva nel server a cui era stata stabilita la connessione, ma il server è stato in grado di suggerire dove potrebbe essere quella voce.
- Il client ha richiesto un’operazione mirata a una voce che esisteva nel server, ma il server non è attualmente in grado di elaborare tale richiesta per qualche motivo. Ad esempio, il client ha inviato una richiesta di scrittura a una replica di sola lettura e la replica è stata in grado di reindirizzare la richiesta a un server scrivibile.
- I dati includono un tipo speciale di voce di referral (a volte chiamata “referral intelligente”) che fa sì che il server generi un referral in base al contenuto di quella voce ogni volta che un client richiede qualcosa in corrispondenza o sotto di essa.
Oltre ai risultati delle operazioni di riferimento, esiste un tipo di risposta correlato per le operazioni di ricerca chiamato riferimento ai risultati della ricerca, che può essere utilizzato per indicare che parte della ricerca può essere condotta in un server diverso. Ciò è particolarmente utile nei casi in cui il set di dati è troppo grande per essere contenuto in un server e parti diverse del DIT vengono suddivise tra server diversi.
Voci Alias
Una voce alias è un tipo speciale di voce che punta a un’altra voce nel DIT, in modo molto simile a come un collegamento simbolico punta a un altro file sul filesystem.
Le voci alias sono principalmente utili per le operazioni di ricerca, in quanto possono essere utilizzate per fare in modo che una voce in una posizione del DIT sembri essere in un’altra posizione. Ciò può essere utile, ad esempio, nei casi in cui l’esistenza di una voce in una particolare sottostruttura viene utilizzata per effettuare alcune determinazioni come l’appartenenza a un gruppo o come mezzo per indicare l’autorizzazione per qualche scopo. Le richieste di ricerca includono un elemento che indica come gestire gli alias incontrati durante la ricerca.
Le operazioni non di ricerca che hanno come destinazione una voce di alias non seguiranno l’alias. Non è possibile utilizzare un alias come identificazione di destinazione per un’operazione di associazione. Gli alias devono essere voci foglia, poiché non è possibile aggiungere una voce sotto una voce alias.
Notare che non tutti i server di directory supportano gli alias. Se un’applicazione è progettata per essere compatibile con un’ampia gamma di server di directory, dovrebbe evitare l’uso di alias.