Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

207
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda