9

Wykonuję aplikację WWW Java EE, która wymaga logowania pojedynczego przy użyciu usługi Active Directory.Pobranie bieżącego użytkownika systemu Windows w aplikacji WWW Java EE dla celów rejestracji jednokrotnej

Aplikacja nie będzie już pytać o nazwę użytkownika i hasło. Proces uwierzytelniania wymagałby pobrania bieżącego zalogowanego użytkownika systemu Windows. Kiedy już mam tego użytkownika, muszę zapytać Active Directory, aby uzyskać role dla zalogowanego użytkownika. Mam świadomość, że wykluczy to użytkowników innych niż Windows, ale jest to aplikacja wewnętrzna i wszyscy klienci używają systemu Windows.

Muszę zaimplementować SSO w 2 aplikacjach internetowych Java EE. 1 aplikacja działa na GlassFish v2.1.1 (JDK 1.6), a druga działa na Tomcat (JDK 1.5).

Zasadniczo moim głównym problemem jest odzyskiwanie bieżącego zalogowanego użytkownika systemu Windows.

Znalazłem już JAAS i Kerberos. Uprzejmie mnie popraw, jeśli się mylę. Rozumiem, że są to protokoły uwierzytelniania i nie mają funkcji pobierania bieżącego zalogowanego użytkownika Windows.

Próbowałem już następujących rzeczy, ale zawsze otrzymuję null lub własną nazwę użytkownika serwera.

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

Jestem otwarty na wszelkie sugestie.

+1

Czy chcesz użytkownika zalogowanego na komputerze klienckim lub serwerze? –

+0

Chciałbym zalogowany użytkownik na komputerze klienta. Dzięki. – Amy

Odpowiedz

2

SPNEGO to projekt typu open source, który udostępnia filtr serwletów, który zapewnia zintegrowane uwierzytelnianie systemu Windows.

jeśli organizacja używa Javie serwerów web/aplikacji oraz wolisz Kerberos/SPNEGO zamiast NTLM jako protokół uwierzytelniania i wolisz mieć Java Servlet Filter (JSR-53) oparta na implementacji zamiast specyficznego dla kontenera modułu uwierzytelniającego (JSR-196) i , który chcesz SSO (bez nazwy użytkownika/hasła monit), to ten projekt może być interesujący dla Ciebie.

Posiada instrukcje dotyczące konfigurowania obu Tomcat i Glassfish.

+1

Dzięki, próbuję teraz SPNEGO. :) – Amy

0

JCIFS NTLM jest no longer supported (chociaż to będzie działać z NTLMv1). W moim bieżącym projekcie użyliśmy SPNEGO jako wcześniej zalecanego.

opcje 1, 2 & 3 będzie próbował dostać się użytkownikowi serwera - może chcesz mieć myśleć o tym, gdzie ten kod jest uruchomiony & jak może wchodzić w interakcje z komputerem klienckim (podpowiedź - to nie może)

+0

Dzięki, próbuję teraz SPNEGO. :) – Amy

4

WAFFLE to świetne rozwiązanie do tego. Nie wymaga konfiguracji Kerberos.