Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

189
Vistas
¿Cómo reemplazar la autenticación de un usuario 'http.formLogin()' con un formulario que está en otro servidor frontend?

Dentro de una clase que extiende WebSecurityConfigurerAdapter , tengo este método de autenticación. Guardo mis usuarios dentro de un Active Directory.

 @Override public void configure(AuthenticationManagerBuilder auth) { ActiveDirectoryLdapAuthenticationProvider adProvider = new ActiveDirectoryLdapAuthenticationProvider("domain.com", "ldap", "ou, dc"); adProvider.setConvertSubErrorCodesToExceptions(true); adProvider.setUseAuthenticationRequestCredentials(true); adProvider.setUserDetailsContextMapper(userDetailsContextMapper()); auth.authenticationProvider(adProvider); }

Solía usar un http.formLogin() para fines de prueba. Cada vez que llamo a localhost:80/security tenía que escribir mi nombre de usuario y contraseña en el formulario.

Este método fue perfecto para probar mi conexión con AD.

Pero ahora, tengo mi interfaz en un servidor diferente. Así que aquí está mi pregunta, ¿dónde debo pasar el nombre de usuario y la contraseña al método de autenticación?

¿Cómo puedo codificar el nombre de usuario y la contraseña y autenticarme en mi Active Directory? (solo para probar ahora, después voy a usar filtros y controladores).

Espero que mi pregunta sea clara.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Ha mezclado dos preguntas diferentes: cómo crear una página de inicio de sesión externa y cómo integrar su aplicación con ActiveDirectory.

Para aplicaciones de una sola página, su API debe enviar una respuesta 200 junto con los datos del usuario o una respuesta 4xx. Esto se puede hacer proporcionando sus propios controladores, como este (el pseudocódigo solo muestra la idea):

 @Override protected void configure(HttpSecurity http) throws Exception { http .formLogin() ... .successHandler(your authentication success handler object) .failureHandler(your authentication failure handler object) .and() .logout() ... .logoutSuccessHandler(your logout success handler object) .and() .exceptionHandling() .authenticationEntryPoint(new Http403ForbiddenEntryPoint()) ... }

Por ejemplo, estos se codifican como se indica a continuación.

Manejador de éxito de autenticación:

 @Component public class AuthSuccessHandler extends SimpleUrlAuthenticationSuccessHandler { @Autowired private ObjectMapper objectMapper; @Autowired private MyService myService; @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { response.setStatus(HttpServletResponse.SC_OK); response.setContentType(MediaType.APPLICATION_JSON_VALUE); AbstractUser currentUser = myService.userForClient(); response.getOutputStream().print( objectMapper.writeValueAsString(currentUser)); clearAuthenticationAttributes(request); } }

En resumen, devuelve un código de respuesta 200 con el usuario actual JSONificado en los datos de respuesta.

Manejador de fallas de autenticación

De hecho, no es necesario codificar una clase para el controlador de fallas de autenticación: el SimpleUrlAuthenticationFailureHandler proporcionado por Spring, si se crea una instancia sin ningún argumento, funciona como se desea.

Controlador de éxito de cierre de sesión

 public class MyLogoutSuccessHandler implements LogoutSuccessHandler { @Override public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { response.setStatus(HttpServletResponse.SC_OK); } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda