9

Sto facendo un'applicazione web Java EE che richiede Single Sign-On con Active Directory.Recupera l'utente Windows corrente nell'applicazione Web Java EE ai fini del Single Sign-On

L'applicazione non richiederà più nome utente e password. Il processo di autenticazione richiederebbe il recupero dell'utente Windows attualmente connesso. Una volta che ho l'utente, ho bisogno di interrogare Active Directory per ottenere i ruoli per quell'utente connesso. Sono consapevole che ciò escluderà utenti non Windows, ma questa è un'applicazione interna e tutti i client utilizzano Windows.

Devo implementare l'SSO in 2 applicazioni web Java EE. 1 applicazione è in esecuzione su GlassFish v2.1.1 (JDK 1.6) e l'altra è in esecuzione su Tomcat (JDK 1.5).

Fondamentalmente il mio problema principale è come recuperare l'utente corrente che ha effettuato l'accesso.

Ho già incontrato JAAS e Kerberos. Gentilmente correggimi se sbaglio. La mia comprensione è che si tratta di un protocollo di autenticazione e non hanno la funzionalità per recuperare le finestre correnti registrate dall'utente.

Ho già provato quanto segue ma ricevo sempre null o il nome utente del server.

  1. System.getProperty("user.name");
  2. new com.sun.security.auth.module.NTSystem().getName();
  3. request.getUserPrincipal().getName();
  4. System.getenv("USERNAME");
  5. JCIF autenticazione NTLM HTTP in Tomcat
  6. LoginContext

Sono aperto a qualsiasi suggerimento.

+1

Vuoi l'utente che ha effettuato l'accesso al computer client o al computer server? –

+0

Vorrei l'utente connesso sul computer client. Grazie. – Amy

risposta

2

SPNEGO è un progetto open source che fornisce un filtro servlet che dimostra l'autenticazione integrata di Windows.

se l'organizzazione utilizza basate server web/applicazioni Java, e si preferisce Kerberos/SPNEGO anziché NTLM come protocollo di autenticazione, e si preferisce avere un Java Servlet Filtro (JSR-53) implementazione basata invece di un modulo di autenticazione specifico del contenitore (JSR-196) e si desidera SSO (nessun nome utente/password prompt), quindi questo progetto potrebbe essere di interesse .

Ha istruzioni per la configurazione di entrambi Tomcat e Glassfish.

+1

Grazie, sto provando su SPNEGO in questo momento. :) – Amy

0

JCIFS NTLM è no longer supported (anche se che possa funzionare con NTLMv1). Nel mio attuale progetto abbiamo utilizzato SPNEGO come consigliato in precedenza.

opzioni 1, 2 & 3 cercheranno di ottenere l'utente del server - si potrebbe desiderare di avere un pensare a dove questo codice è in esecuzione & come potrebbe interagire con la macchina client (suggerimento - non può)

+0

Grazie, sto provando su SPNEGO in questo momento. :) – Amy

4

WAFFLE è un'ottima soluzione per questo. Non ha bisogno della configurazione Kerberos.