Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.1K
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!