AddEdit
L’operazione ADD inserisce una nuova voce nel database directory-server. Se il nome distinto nella richiesta di aggiunta esiste già nella directory, il server non aggiungerà una voce duplicata ma imposterà il codice del risultato nel risultato di aggiunta al decimale 68, “entryAlreadyExists”.
- I server compatibili con LDAP non dereferenzieranno mai il nome distinto trasmesso nella richiesta add quando si tenta di individuare la voce, ovvero i nomi distinti non vengono mai de-alias.,
- I server compatibili con LDAP assicurano che il nome distinto e tutti gli attributi siano conformi agli standard di denominazione.
- La voce da aggiungere non deve esistere e deve esistere il superiore immediato.
Nell’esempio precedente, uid=user,ou=people,dc=example,dc=com
non deve esistere e ou=people,dc=example,dc=com
deve esistere.
Bind (authenticate)Edit
Quando viene creata una sessione LDAP, ovvero quando un client LDAP si connette al server, lo stato di autenticazione della sessione è impostato su anonimo. L’operazione BIND stabilisce lo stato di autenticazione per una sessione.,
Simple BIND e SASL PLAIN possono inviare il DN e la password dell’utente in chiaro, quindi le connessioni che utilizzano Simple o SASL PLAINshould essere crittografate utilizzando Transport Layer Security (TLS). Il server controlla in genere la password rispetto all’attributouserPassword
nella voce denominata. Il BIND anonimo (con DN e password vuoti) ripristina la connessione allo stato anonimo.
SASL (Simple Authentication and Security Layer) BIND fornisce servizi di autenticazione attraverso una vasta gamma di meccanismi, ad esempio Kerberos o il certificato client inviato con TLS.,
BIND imposta anche la versione del protocollo LDAP inviando un numero di versione sotto forma di un numero intero. Se il client richiede una versione che il server non supporta, il server deve impostare il codice risultato nella risposta BIND al codice per un errore di protocollo. Normalmente i client dovrebbero usare LDAPv3, che è ildefault nel protocollo ma non sempre nelle librerie LDAP.
BIND doveva essere la prima operazione in una sessione in LDAPv2, ma non è richiesta a partire da LDAPv3., In LDAPv3, eachsuccessful BIND request modifica lo stato di autenticazione della sessione e ogni richiesta di BIND non riuscita ripristina lo stato di autenticazione della sessione.
DeleteEdit
Per eliminare una voce, un client LDAP trasmette una richiesta di cancellazione correttamente formata al server.,
- Una richiesta di cancellazione deve contenere il nome distinto della voce da eliminare
- I controlli di richiesta possono anche essere allegati alla richiesta di cancellazione
- I server non dereferenziano gli alias durante l’elaborazione di una richiesta di cancellazione
- Solo le voci foglia (voci senza subordinati) possono essere eliminate da una richiesta di cancellazione., Alcuni server supportano un attributo operativo
hasSubordinates
il cui valore indica se una voce ha voci subordinate e alcuni server supportano un attributo operativonumSubordinates
che indica il numero di voci subordinate alla voce contenente l’attributonumSubordinates
. - Alcuni server supportano il controllo della richiesta di cancellazione sottoalbero che consente la cancellazione del DN e di tutti gli oggetti subordinati al DN, soggetti a controlli di accesso., Le richieste di eliminazione sono soggette a controlli di accesso, ovvero se una connessione con un determinato stato di autenticazione sarà autorizzata a eliminare una determinata voce è regolata da meccanismi di controllo degli accessi specifici del server.
Cerca e confrontaedit
L’operazione di ricerca viene utilizzata sia per cercare che per leggere le voci. I suoi parametri sono:
baseObject Il nome della voce dell’oggetto di base (o eventualmente della radice) relativa a cui deve essere eseguita la ricerca. ambito Quali elementi sotto il baseObject per la ricerca., Questo può essereBaseObject
(cerca solo la voce con nome, in genere usata per leggere una voce),singleLevel
(voci immediatamente sotto il DN di base), owholeSubtree
(l’intero sottoalbero che inizia dal DN di base). criteri di filtro da utilizzare nella selezione degli elementi all’interno dell’ambito., Ad esempio, il filtro(&(objectClass=person)(|(givenName=John)(mail=john*)))
selezionerà “persone” (elementi di objectClassperson
) dove le regole corrispondenti pergivenName
email
determinano se i valori per tali attributi corrispondono all’asserzione del filtro. Si noti che un malinteso comune è che i dati LDAP siano sensibili al maiuscolo / minuscolo, mentre in realtà le regole di corrispondenza e le regole di ordinamento determinano le relazioni di corrispondenza, confronto e valore relativo., Se i filtri di esempio dovevano corrispondere al caso del valore dell’attributo, è necessario utilizzare un filtro di corrispondenza estensibile, ad esempio(&(objectClass=person)(|(givenName:caseExactMatch:=John)(mail:caseExactSubstringsMatch:=john*)))
derefAliases Se e come seguire le voci alias (voci che si riferiscono ad altre voci), attributi Quali attributi restituire nelle voci dei risultati. sizeLimit, timeLimit Numero massimo di voci da restituire e tempo massimo per consentire l’esecuzione della ricerca. Questi valori, tuttavia, non possono ignorare le restrizioni poste dal server sul limite di dimensione e sul limite di tempo. typesOnly Restituisce solo i tipi di attributo, non i valori di attributo.,
Il server restituisce le voci corrispondenti e potenzialmente i riferimenti di continuazione. Questi possono essere restituiti in qualsiasi ordine. Il risultato finale includerà il codice del risultato.
L’operazione Confronta prende un DN, un nome di attributo e un valore di attributo e controlla se la voce denominata contiene quell’attributo con quel valore.
ModifyEdit
L’operazione di modifica viene utilizzata dai client LDAP per richiedere al server LDAP di apportare modifiche alle voci esistenti. I tentativi di modificare le voci che non esistono falliranno. Le richieste di modifica sono soggette a controlli di accesso implementati dal server.,
L’operazione di modifica richiede che venga specificato il nome distinto (DN) della voce e una sequenza di modifiche. Ogni cambiamento nella sequenza deve essere una delle seguenti:
- add (aggiungi un nuovo valore, che non deve essere già esistente nell’attributo)
- delete (elimina un valore esistente)
- sostituisci (sostituisci un valore esistente con un nuovo valore)
LDIF esempio di aggiunta di un valore di un attributo:
dn: dc=example,dc=comchangetype: modifyadd: cncn: the-new-cn-value-to-be-added-
sostituire il valore di un attributo esistente, Utilizzare la parola chiave replace., Se l’attributo è multivalore, il client deve specificare il valore dell’attributo da aggiornare.
Per eliminare un attributo da una voce, utilizzare la parola chiave delete e il designatore changetype modify. Se l’attributo è multivalore, il client deve specificare il valore dell’attributo da eliminare.
Esiste anche un’estensione di modifica-incremento che consente di incrementare un valore di attributo incrementabile di una quantità specificata., Il seguente esempio utilizzando LDIF incrementa employeeNumber per 5:
dn: uid=user.0,ou=people,dc=example,dc=comchangetype: modifyincrement: employeeNumberemployeeNumber: 5-
Quando i server LDAP sono in una topologia replicata, i client LDAP dovrebbero considerare l’utilizzo del controllo post-read per verificare gli aggiornamenti invece di una ricerca dopo un aggiornamento. Il controllo post-lettura è progettato in modo che le applicazioni non debbano emettere una richiesta di ricerca dopo un aggiornamento: è una forma errata recuperare una voce al solo scopo di verificare che un aggiornamento abbia funzionato a causa del modello di coerenza finale della replica., Un client LDAP non deve presumere che si connette allo stesso server di directory per ogni richiesta perché gli architetti potrebbero aver posizionato bilanciatori di carico o proxy LDAP o entrambi tra client LDAP e server.
Modifica DNEdit
Modifica DN (sposta / rinomina voce) prende il nuovo RDN (Nome distinto relativo), facoltativamente il nuovo DN genitore, e un flag che indica se eliminare il valore(s) nella voce che corrispondono al vecchio RDN. Il server può supportare la ridenominazione di interi sottoalberi di directory.,
Un’operazione di aggiornamento è atomica: altre operazioni vedranno la nuova voce o quella vecchia. D’altra parte, LDAP non definisce transazioni di più operazioni: se si legge una voce e quindi la si modifica, un altro client potrebbe aver aggiornato la voce nel frattempo. I server possono implementare estensioni che supportano questo, però.
Operazioni estesemodiFica
L’operazione estesa è un’operazione LDAP generica che può definire nuove operazioni che non facevano parte delle specifiche del protocollo originale. StartTLS è una delle estensioni più significative., Altri esempi includono Annulla e Modifica della password.
StartTLSEdit
L’operazione StartTLS stabilisce la sicurezza del livello di trasporto (discendente di SSL) sulla connessione. Può fornire la riservatezza dei dati (per proteggere i dati dal rispetto da parte di terzi) e/o la protezione dell’integrità dei dati (che protegge i dati da manomissioni). Durante la negoziazione TLS il server invia il suo certificato X. 509 per dimostrare la sua identità. Il cliente può anche inviare un certificato per dimostrare la sua identità. Dopo averlo fatto, il client può quindi utilizzare SASL / EXTERNAL., Utilizzando il SASL / ESTERNO, il client richiede al server di derivare la propria identità da credenziali fornite a un livello inferiore (come TLS). Sebbene tecnicamente il server possa utilizzare qualsiasi informazione sull’identità stabilita a qualsiasi livello inferiore, in genere il server utilizzerà le informazioni sull’identità stabilite da TLS.
I server spesso supportano anche il protocollo “LDAP” (“Secure LDAP”, comunemente noto come “LDAP over SSL”) non standard su una porta separata, per impostazione predefinita 636., LDAPS differisce da LDAP in due modi: 1) al momento della connessione, il client e il server stabiliscono TLS prima che qualsiasi messaggio LDAP venga trasferito (senza un’operazione StartTLS) e2) la connessione LDAPS deve essere chiusa alla chiusura di TLS.
Alcune librerie client “LDAPS” crittografano solo la comunicazione; non controllano il nome host rispetto al nome nel certificato fornito.
AbandonEdit
L’operazione Abandon richiede che il server interrompa un’operazione denominata da un ID messaggio. Il server non deve onorare la richiesta. Né l’abbandono né un’operazione abbandonata con successo inviano una risposta., Un’operazione estesa di annullamento simile invia risposte, ma non tutte le implementazioni supportano questo.
UnbindEdit
L’operazione Unbind abbandona tutte le operazioni in sospeso e chiude la connessione. Non ha risposta. Il nome è di origine storica e non è l’opposto dell’operazione di Bind.
I client possono interrompere una sessione semplicemente chiudendo la connessione, ma dovrebbero usare Unbind. Unbind consente al server di chiudere con grazia la connessione e liberare risorse che altrimenti conserverebbe per un po ‘ di tempo fino a scoprire che il client ha abbandonato la connessione., Indica inoltre al server di annullare le operazioni che possono essere annullate e di non inviare risposte per le operazioni che non possono essere annullate.