🗒️ Descripción
Implementar un sistema de autenticación basado en JSON Web Tokens (JWT) que permita a los usuarios autenticarse de forma segura tras el login.
Este token servirá para acceder a los endpoints protegidos y garantizar la integridad de las sesiones sin necesidad de almacenar estado en el servidor.
🎯 Objetivo
Proveer un mecanismo robusto de autenticación sin estado (stateless), manteniendo la seguridad y eficiencia del sistema, y preparando el microservicio para futuras integraciones con otros servicios del monorepo.
🔧 Tareas
- Crear una clase
JwtUtils que:
- Genere tokens JWT al iniciar sesión.
- Valide tokens en las peticiones entrantes.
- Extraiga información del usuario (claims, email, roles).
- Configurar un filtro
JwtAuthenticationFilter que:
- Intercepte las peticiones HTTP.
- Verifique la validez del token antes de permitir el acceso a los endpoints protegidos.
- Actualizar
SecurityConfig para:
- Integrar el filtro JWT.
- Definir endpoints públicos (
/auth/**) y privados (/Authuser/**).
- Asegurar que el
AuthUserService genere el token al loguear y lo devuelva al cliente.
- Añadir variables de entorno seguras (
JWT_SECRET, JWT_EXPIRATION) y documentarlas.
- Crear pruebas unitarias para la generación y validación de tokens.
✔️ Criterios de aceptación
- [Happy path] Tras un login exitoso, se devuelve un token JWT válido y reutilizable.
- [Not happy path] Si el token es inválido o ha expirado, el sistema devuelve error 401.
- [Edge case 1] El token no puede modificarse sin invalidarse.
- [Edge case 2] Los endpoints públicos siguen siendo accesibles sin token.
🗒️ Descripción
Implementar un sistema de autenticación basado en JSON Web Tokens (JWT) que permita a los usuarios autenticarse de forma segura tras el login.
Este token servirá para acceder a los endpoints protegidos y garantizar la integridad de las sesiones sin necesidad de almacenar estado en el servidor.
🎯 Objetivo
Proveer un mecanismo robusto de autenticación sin estado (stateless), manteniendo la seguridad y eficiencia del sistema, y preparando el microservicio para futuras integraciones con otros servicios del monorepo.
🔧 Tareas
JwtUtilsque:JwtAuthenticationFilterque:SecurityConfigpara:/auth/**) y privados (/Authuser/**).AuthUserServicegenere el token al loguear y lo devuelva al cliente.JWT_SECRET,JWT_EXPIRATION) y documentarlas.✔️ Criterios de aceptación