2009-05-19 21 views
58

Sono stato in contatto con LDAP in molti progetti in cui sono stato coinvolto ma, a dire il vero, non lo capisco davvero. Ho pensato che fosse solo una directory di persone, ma dopo ho scoperto che può contenere qualsiasi oggetto in una struttura gerarchica.Cosa risolve LDAP?

Ho installato openldap nella mia scatola e ho trovato molti tutorial riguardanti solo l'installazione.

Che cos'è LDAP? Quali sono gli scenari in cui LDAP è la scelta giusta? Quali sono i concetti LDAP che dovrei sapere per lavorarci? Quali sono i vantaggi di LDAP? È usato solo perché le vecchie applicazioni lo hanno usato? C'è un buon documento ovunque su internet che spiega tutte queste domande?

UPDATE: A complemento delle risposte che ho trovato this link che contiene una guida rapida per il novizio LDAP come me.

risposta

38

Che cos'è LDAP? Quali sono gli scenari in cui LDAP è la scelta giusta?

Al suo interno, LDAP è un protocollo per accedere agli oggetti adatti per l'archiviazione in una directory.Se qualcosa è "adatto" è una determinazione interamente soggettiva lasciata agli implementatori, ma tipicamente questo significa che le collezioni di molti oggetti hanno dati aggiornati (o non) mai aggiornati, in cui ogni oggetto ha un aspetto evidente o canonico up:

  • una rubrica telefonica (cercare per nome o per numero di telefono)
  • titoli in una libreria (guardare in alto per titolo, autore, ecc)
  • inquilini in un edificio (Look up di piano, suite, nome, ecc.)

e così via.

Si noti che LDAP stesso è solo un protocollo e non fornisce alcuna memoria effettiva - più o meno allo stesso modo, HTTP non implica nulla se si sta usando Apache, Jetty, Tomcat, Mongrel, e altri . come un server web. (Un problema con LDAP, in generale, è il riutilizzo di confusione di nomi per indicare cose diverse. Wikipedia ha a good section su questo.)

2

LDAP è solo un protocollo, l'articolo di Wikipedia spiega adeguatamente http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol

è un modo per interrogare una struttura organizzativa di base, come Microsoft Active Directory. È possibile utilizzare le query LDAP per ottenere tutti i tipi di informazioni sugli utenti, utilizzarlo per impostare i diritti di applicazioni, ecc

5

Questo link vi spiegherà LDAP http://blogs.oracle.com/raghuvir/entry/ldap

Usiamo LDAP nel nostro ufficio per la posta elettronica aziendale ricerche di indirizzi di larghezza. Lo usiamo come un unico segnale di accesso al servizio per le nostre app interne.

9

LDAP ha prestazioni di lettura O (1), in cambio di prestazioni di scrittura O (qualcosa di peggio). È ideale per i dati a cui si accede frequentemente, ma modificati raramente: directory di persone, nomi di computer e indirizzi e così via. (quindi l'acronimo: Lightweight Directory Access Protocol.)

LDAP è la scelta giusta dove il dolore dell'utilizzo di un database che non è relazionale, in termini di ridotta familiarità degli sviluppatori e caratteristiche di prestazioni strane, è inferiore al guadagno di accesso veloce alla lettura.

+5

Crea i tuoi O () ha ragione. non intendono ciò che si pensa – Javier

+1

per chiarire: volevo dire che i tempi di recupero non dipendono dal numero di elementi nel datastore (ad esempio, le query non diventano più lente quanto più grande è la tabella). Gli inserti, tuttavia, nella maggior parte delle implementazioni LDAP. –

+1

Qualsiasi server ldap valga la pena, mantiene un indice sul dn (ovvero la chiave primaria) e consente di definire indici aggiuntivi per ottimizzare le query comuni. – dwarring

2

LDAP è un protocollo di accesso; fornisce solo un'API alla tecnologia sottostante per cui si sta tentando di trovare applicazioni: uno directory service. OpenLDAP è uno dei servizi di directory open source; Sun ha un'altra implementazione chiamata OpenDS. Active Directory e Novell NDS sono altri due comunemente visti nel campo.

La directory può essere utilizzata per archiviare informazioni su qualsiasi tipo di risorsa e le relazioni tra le risorse, ad esempio i diritti di un utente in una directory, una stampante o un dispositivo di accesso alla rete.

1

In uno dei miei vecchi posti di lavoro che abbiamo usato LDAP come il nostro sistema di autenticazione utente principale.

Questo a sua volta fornito ai nostri vari sistemi di informazioni che dept. appartenevano a, dove dovevano montare le loro home directory, informazioni di contatto, gestione dei dipendenti.

Non necessariamente controllato da LDAP, ma altre cose che avevamo combinato per funzionare tramite LDAP era l'esistenza di utenti SQL, K4, samba e generazione di account e-mail.

3

Sto lavorando part-time e uno studente a tempo pieno. Il mio curriculum incoraggia (richiede la lettura) molti progetti di gruppo.

Ho usato openLdap e phpLdapAdmin per controllare l'accesso ai miei repository Subversion e Mercurial, progetti Trac, Hudson, ecc. Non è stato facile da installare, ma il tempo risparmiato in amministrazione è stato inviato da Dio.

Se si dispone di progetti in cui si avranno molti gruppi di persone che devono essere in grado di utilizzare risorse diverse, è un buon strumento.

+0

A seconda della scala e della portata della base di utenti, a volte i file sono sufficienti. A volte un DB, a volte LDAP. Spesso dipende dalla scala. I server LDAP in generale sono ottimizzati per questo utilizzo, spesso scalano meglio. meno chiara di un caso con casi di utilizzo più piccoli. – geoffc

13

Le DIT sono uno schema di descrizione gerarchico che si presta molto bene agli algali di B-Tree, con risultati di ricerca straordinari nella maggior parte dei casi. Directory Server come OpenDS restituisce ricerche indicizzate in micro-secondi, mentre i sistemi RDBMS sono molto più lenti. I server di directory (spesso chiamati server LDAP) scambiano risorse (RAM, CPU) per una risposta rapida alla lettura. I sistemi RDBMS offrono una maggiore funzionalità in termini di gestione dei dati in questione. Hai bisogno di velocità con pochi o zero aggiornamenti, semplicità e un piccolo protocollo di rete? Utilizzare un server di directory. Hai bisogno di capacità di gestione dati e di data mining e/o alto tasso di variazione del database con aspetti relazionali definiti tra i dati? Usa un RDBMS (MySQL è la soluzione migliore qui).

+0

Buona combinazione di descrittivo e prescrittivo. Benvenuto in SO! –

5

Una prospettiva che mi piace arpare è che LDAP è un'app in cima a un archivio di persistenza e un database è un archivio di persistenza. Entrambi possono essere utilizzati per memorizzare le informazioni dell'utente.

LDAP offre una gerarchia che è più difficile da fare in un database. Puoi creare una gerarchia in un database, ma è più difficile fare cose come la delega (queste righe appartengono solo a te) o gli ACL sulle righe. Spingere i problemi di sicurezza fuori dal database è più semplice se si utilizza LDAP per memorizzare le identità degli utenti. Cercare di risolverlo nel database è strano.

Allo stesso tempo, LDAP è terribile per la segnalazione contro (trasformare LDAP in un DB per la segnalazione). Memorizzare gli attributi in profondità nella struttura che devono essere ricercati rapidamente può essere problematico per le prestazioni (non farlo, avere un DB sul lato o cercare di appiattire la query ridisegnando il tuo DIT). Memorizzare gli attributi dappertutto in un DIT molto profondo è solo una cattiva progettazione del sistema LDAP o del sistema, ma a volte è inevitabile se sei legato a un prodotto fornitore o a un'app legacy.