9

Estoy haciendo una aplicación web Java EE que requiere inicio de sesión único con Active Directory.Recuperar usuario actual de Windows en la aplicación web Java EE para inicio de sesión único con fines

La aplicación ya no solicitará un nombre de usuario y contraseña. El proceso de autenticación requeriría la recuperación del usuario actual con sesión iniciada en Windows. Una vez que tengo el usuario, necesito consultar a Active Directory para obtener los roles para ese usuario conectado. Soy consciente de que esto excluirá a los usuarios que no sean de Windows, pero esta es una aplicación interna y todos los clientes usan Windows.

Tengo que implementar el SSO en 2 aplicaciones web Java EE. 1 aplicación se está ejecutando en GlassFish v2.1.1 (JDK 1.6) y la otra se está ejecutando en Tomcat (JDK 1.5).

Básicamente, mi problema principal es cómo recuperar el usuario con sesión iniciada actualmente en Windows.

Ya he encontrado JAAS y Kerberos. Amablemente corrígeme si estoy equivocado. Según tengo entendido, estos son protocolos de autenticación y no tienen la función para recuperar el usuario actual con sesión de Windows.

Ya he intentado lo siguiente, pero siempre recibo null o el nombre de usuario del servidor.

  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 autenticación HTTP en Tomcat
  6. LoginContext

Estoy abierto a cualquier sugerencia.

+1

¿Desea que el usuario haya iniciado sesión en la computadora cliente o en la computadora servidor? –

+0

Me gustaría que el usuario haya iniciado sesión en la máquina cliente. Gracias. – Amy

Respuesta

2

SPNEGO es un proyecto de código abierto que proporciona un filtro de servlet que permite la Autenticación de Windows integrada.

si su organización utiliza servidores web/aplicación basada en Java, y prefieren Kerberos/SPNEGO en lugar de NTLM como protocolo de autenticación, y se quiere tener un servlet de Java filtro (JSR-53) implementación basada en en lugar de un contenedor específico módulo de autenticación (JSR-196), y desea SSO (sin nombre de usuario/contraseña ), entonces este proyecto puede ser de algo que le interese.

Tiene instrucciones para configurar Tomcat y Glassfish.

+1

Gracias, estoy probando SPNEGO ahora mismo. :) – Amy

0

JCIFS NTLM es no longer supported (a pesar de que trabajará con NTLMv1). En mi proyecto actual, hemos usado SPNEGO como recomendado previamente.

las opciones 1, 2 & 3 a tratar de conseguir que el usuario del servidor - es posible que desee tener un pensar acerca de dónde se está ejecutando el código & cómo podría interactuar con la máquina cliente (pista - no puede)

+0

Gracias, estoy probando SPNEGO ahora mismo. :) – Amy

4

WAFFLE es una gran solución para esto. No necesita la configuración de Kerberos.

Cuestiones relacionadas