Recupera l’utente Windows corrente nell’applicazione web Java EE per scopi Single Sign-On

Sto facendo un’applicazione web Java EE che richiede Single Sign-On con Active Directory.

L’applicazione non richiederà più un nome utente e una 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’attuale utente connesso a Windows.

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 windows correnti registrate dall’utente.

Ho già provato quanto segue, ma ottengo sempre il nome utente null o server.

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

Sono aperto a qualsiasi suggerimento.

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

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

se la tua organizzazione utilizza web / application server java e preferisci Kerberos / SPNEGO invece di NTLM come protocollo di autenticazione, e preferisci avere una implementazione basata su JSR-53 (Java Servlet Filter) invece di un modulo di autenticazione specifico per container (JSR -196), e vuoi SSO (nessun nome utente / password richiesta), allora questo progetto potrebbe essere di tuo interesse.

Ha istruzioni per la configurazione di Tomcat e Glassfish .

JCIFS NTLM non è più supportato (sebbene funzioni con NTLMv1). Nel mio attuale progetto abbiamo usato SPNEGO come consigliato in precedenza.

Le opzioni 1, 2 e 3 proveranno a farti diventare l’utente del server: potresti volere pensare a dove questo codice è in esecuzione e come potrebbe interagire con il client (suggerimento – non può)