2013-04-27 12 views
38

Esiste un modo semplice per verificare le credenziali di un utente rispetto a un'istanza LDAP? So come scrivere un programma Java che prenda il 'DN utente' e la password e lo controlli contro l'istanza LDAP. Tuttavia c'è un modo più semplice? Specialmente un metodo che non solo autentica l'utente, ma elenca anche tutti i ruoli dell'utente.Un modo semplice per testare le credenziali di un utente LDAP

risposta

1

L'autenticazione viene eseguita tramite un semplice comando ldap_bind che accetta il DN dell'utente e la password. L'utente è autenticato quando il bind ha successo. Di solito si otterrebbe il DN degli utenti tramite un ldap_search basato sugli utenti uid o indirizzo email.

Ottenere i ruoli degli utenti è qualcosa di diverso in quanto è un ldap_search e dipende da dove e come i ruoli sono memorizzati nel ldap. Ma potresti essere in grado di recuperare i ruoli durante il lap_search utilizzato per trovare il DN dell'utente.

+0

Grazie per la risposta. Quello che sto veramente cercando è uno strumento in cui posso digitare il DN dell'utente e la password, e lo strumento testerebbe e vedrà se l'utente può essere autenticato con quelle credenziali. Questo è uno strumento molto facile da sviluppare; quindi speravo che esistesse già un tale strumento. – user1888243

+0

Lo strumento è chiamato ldap_bind. – EJP

+0

Unix/Linux offre 'ldapsearch' (principalmente da openLDAP), con le opzioni corrette non si vede la password nella 'cronologia' di 'elenco processi' –

11

Utilizzare ldapsearch per l'autenticazione. La versione opends potrebbe essere utilizzato come segue:

ldapsearch --hostname hostname --port port \ 
    --bindDN userdn --bindPassword password \ 
    --baseDN '' --searchScope base 'objectClass=*' 1.1 
+0

In questo modo la password può essere visualizzata in chiaro nell'elenco dei processi? – Kiril

+2

@Kiril Penso che sostituire '--bindPasswrd password' con '-W' (prompt per password) risolverebbe il problema. – ibic

8

Si dovrebbe verificare Browser LDAP Softerra (la versione gratuita di amministratore LDAP), che può essere scaricato qui:

http://www.ldapbrowser.com/download.htm

I Ho usato questa applicazione estensivamente per tutti i miei sviluppi Active Directory, OpenLDAP e Novell eDirectory, ed è stata assolutamente inestimabile.

Se si desidera controllare e vedere se una combinazione nome utente \ password funziona, è sufficiente creare un "Profilo" per il server LDAP e quindi immettere le credenziali durante il passaggio 3 del processo di creazione:

enter image description here

cliccando su "Fine", si verrà rilasciato in modo efficace una legatura al server utilizzando le credenziali di autenticazione, meccanismo, e la password che hai specificato. Ti verrà richiesto se il bind non funziona.

+1

Questo ** non ** funziona: questo controllerà solo se l'utente specificato ha le autorizzazioni per elencare le informazioni utente da LDAP, che non è di per sé garantito da Active Directory. In tal caso l'autenticazione potrebbe fallire mentre le credenziali dell'utente sono valide. – Sebazzz

+0

No.Questo comando rilascia un binding completo della directory, proprio come farebbe un tentativo di accesso standard. Se non si dispone delle autorizzazioni per visualizzare la directory di base, verrà visualizzata una schermata vuota. – X3074861X

+0

Ottima risposta! Non sapevo quell'applicazione. Grazie mille! – ClownCoder

42

ldapwhoami -vvv -h <hostname> -p <port> -D <binddn> -x -w <passwd>, dove binddn è il DN della persona cui credenziali si esegue l'autenticazione.

In caso di successo (ad esempio, credenziali valide), si ottiene Result: Success (0). In caso di errore, ottieni ldap_bind: Invalid credentials (49).