2009-02-19 24 views
5

Sono interessato alle best practice sull'utilizzo dell'autenticazione LDAP in un'applicazione Web basata su Java. Nella mia app non voglio memorizzare username \ password, solo alcuni ID. Ma voglio recuperare le informazioni aggiuntive (Nome, Cognome) se ne esiste una in un catalogo LDAP.Best practice LDAP

risposta

6

Il mio team utilizza LDAP come metodo di autenticazione standard. Fondamentalmente, consideriamo LDAP come qualsiasi altro database.

Per aggiungere un utente all'applicazione, è necessario selezionarne uno da LDAP o crearlo in LDAP; quando l'utente viene cancellato dall'applicazione, rimane in LDAP ma non ha accesso all'applicazione.

Fondamentalmente è necessario memorizzare solo il nome utente LDAP localmente. È possibile leggere i dati LDAP (e-mail, reparto, ecc.) Da LDAP ogni volta oppure importarli in un'applicazione in qualche modo, sebbene leggerli da LDAP sia probabilmente più semplice e più intelligente poiché i dati LDAP possono cambiare. Naturalmente, se hai bisogno di report o di utilizzare ampiamente i dati LDAP, potresti voler estrarlo da LDAP (manualmente o con un'attività batch).

La cosa bella è che una volta che un utente è disabilitato in LDAP, è disabilitato in tutte le applicazioni contemporaneamente; inoltre, l'utente ha le stesse credenziali in tutte le applicazioni. In ambiente aziendale, con un sacco di applicazioni interne, questo è un vantaggio importante. Non utilizzare LDAP per gli utenti per una sola applicazione; nessun vero vantaggio in questo scenario.

1

Se si dispone di più di un'applicazione Web e si desidera utilizzare l'autenticazione LDAP, una soluzione SSO preconfezionato può essere migliore della creazione della propria autenticazione LDAP. CAS supporta l'autenticazione LDAP e può recuperare i dati necessari per l'applicazione.

Al mio college abbiamo effettivamente implementato CAS come un unico accesso al nostro server Active Directory. Utilizziamo inoltre CAS per autenticare le nostre applicazioni J2EE e stiamo lavorando sull'utilizzo di CAS per autenticare le nostre applicazioni PHP.

Utilizziamo AD per contenere gli utenti per il dominio. Esistono alcune OU in base al tipo di utente. Ciascun utente ha un ID univoco che risulta essere il suo ID studente/dipendente, quindi le applicazioni possono utilizzarlo come chiave primaria nei propri database. Abbiamo un metodo di autorizzazione basato su database per le nostre applicazioni PHP. L'autorizzazione per l'applicazione J2EE proviene da un valore in LDAP.

Buona fortuna con la vostra applicazione.

0

Quindi, si desidera che l'utente immetta solo ID e quindi acquisisca il resto delle proprie informazioni da LDAP? È abbastanza facile.

  1. Creare contesto LdapInitial e collegarsi a LDAP
  2. Fare una ricerca per l'ID (dovrebbe essere memorizzato come un valore di attributo) - per esempio (& (userid = john) (objectClass = user)) - che significa "userid = John e objectClass = user"
  3. oggetto SearchResult conterrebbe tutti gli attributi (o quelli che hai chiesto)

Alcuni LDAP le implementazioni (notabili MS ActiveDirectory LDAP) non consentono di connettersi con utenti anonimi. Per chi ha bisogno di avere una userid/password tecnica per connettersi.

Come detto sopra, LDAP ha di norma senso quando si hanno molte applicazioni.

P.S. Per sentire cosa LDAP è provare Apache Directory Studio.

+0

Non proprio così! Nel mio database di app voglio solo ID di archivio e DN correlato da LDAP. E se ho bisogno di ulteriori informazioni sull'utente, posso ottenerlo dalla directory usando DN –

+0

Fino a te, anche se è una duplicazione. Ma cosa stai chiedendo davvero? –

4

Per le migliori pratiche generali con LDAP, vedere "LDAP: Programming practices".

+2

Il link è morto, ma è possibile trovare un riepilogo all'indirizzo https://ff1959.wordpress.com/2011/10/27/ldap-programming-best-practices/ –