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

346
Visualizações
Spring Boot OAuth2 Cierre de sesión único (Cerrar sesión)

Estoy considerando usar OAuth2 para mi aplicación. La arquitectura que estoy tratando de implementar es la siguiente:

  • Tendré mi propio (y solo este) servidor de autorización
  • Algunas aplicaciones de recursos que validan el acceso a sus recursos mediante el servidor de autorización
  • Algunas aplicaciones cliente (web, móvil) que redirigirán al usuario al servidor de autorización para la autenticación y, en caso de éxito, consumirán las API en las aplicaciones de recursos.

Hasta ahora he logrado implementar esta interacción entre 3 aplicaciones básicas (1 servidor de autenticación, 1 servidor de recursos y 1 cliente). Lo que no funciona es la funcionalidad de cierre de sesión. He leído sobre el "problema notoriamente complicado" que Dave Syer describe en su tutorial, pero en este caso realmente necesito que el usuario vuelva a iniciar sesión después de cerrar la sesión. Intenté otorgar unos segundos al token de acceso y al token de actualización, pero en lugar de que se me pida que inicie sesión nuevamente cuando llegue el vencimiento, recibo un NPE en la aplicación del cliente. También probé las soluciones propuestas en esta publicación para eliminar el token de la tienda de tokens, pero no funciona. Para mí, el cierre de sesión único es el comportamiento deseable para esta implementación. ¿Cómo puedo lograr esto usando Spring Boot Oauth2. Si no es posible por alguna razón, ¿qué alternativas podría usar para implementar una seguridad centralizada usando Spring Boot?

Gracias por adelantado.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Después de muchas pruebas, me di cuenta de que esto se puede resolver simplemente con una redirección al AuthServer y haciendo el cierre de sesión mediante programación de esta manera:

  • En la aplicación cliente (WebSecurityConfigurerAdapter):

     @Override protected void configure(HttpSecurity http) throws Exception { http .logout() .logoutSuccessUrl("http://your-auth-server/exit"); }
  • En el servidor de autorización:

     @Controller public class LogoutController { @RequestMapping("/exit") public void exit(HttpServletRequest request, HttpServletResponse response) { // token can be revoked here if needed new SecurityContextLogoutHandler().logout(request, null, null); try { //sending back to client app response.sendRedirect(request.getHeader("referer")); } catch (IOException e) { e.printStackTrace(); } } }

He publicado una aplicación de muestra en github con un ejemplo completo de esta implementación.

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