Skip to content

#[auth-service-06] Implementar autenticación con JWT #57

@AinohaBarcia

Description

@AinohaBarcia

🗒️ 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.

Metadata

Metadata

Assignees

Labels

No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions