Skip to content

Latest commit

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

AccessManager

Sistema de autenticación y autorización desarrollado en Java con Spring Boot y Spring Security.
El proyecto implementa y compara dos enfoques de autenticación ampliamente usados en backend:

  • Autenticación stateless basada en JSON Web Tokens (JWT)
  • Autenticación stateful basada en sesiones

El objetivo es analizar las diferencias, ventajas y limitaciones de cada enfoque dentro del mismo dominio funcional.


Implementaciones disponibles

Explora las dos implementaciones de autenticación desarrolladas en este proyecto:

auth-jwt - Autenticación JWT

Implementación stateless con tokens JWT. Ideal para:

  • Arquitecturas de microservicios
  • APIs distribuidas
  • Escalabilidad horizontal sin configuración adicional

auth-session - Autenticación por Sesión

Implementación stateful con sesiones del servidor. Ideal para:

  • Control estricto de acceso con revocación inmediata
  • Auditoría completa de sesiones activas
  • Aplicaciones monolíticas o con pocos servidores

Cada rama incluye su propio README con:

  • Decisiones de diseño explicadas
  • Flujo de autenticación detallado
  • Tests de seguridad implementados
  • Trade-offs y limitaciones documentadas

Comparación JWT vs Sesión

AspectoJWT (auth-jwt)Sesión (auth-session)
EstadoStateless: sin estado en servidorStateful: estado en servidor
AlmacenamientoCliente (token firmado)Servidor (sesión HTTP)
EscalabilidadHorizontal sin configuración adicionalRequiere sticky sessions o store compartido
RevocaciónNo inmediata (solo por expiración)Inmediata (invalidación de sesión)
PayloadViaja en cada petición (header)Solo cookie con ID de sesión
ValidaciónVerificación criptográfica del tokenConsulta de sesión en memoria/store
AuditoríaLimitada (solo en logs)Completa (sesiones activas visibles)
Casos de usoAPIs distribuidas, microserviciosAplicaciones monolíticas, control estricto

¿Qué implementación explorar primero?

  • Elige auth-jwt si te interesa arquitecturas distribuidas y escalabilidad stateless
  • Elige auth-session si te interesa control de sesiones y revocación inmediata

Qué aprenderás en este repositorio

  • Diferencias prácticas entre autenticación stateless (JWT) y stateful (sesión)
  • Configuración de Spring Security para ambos enfoques
  • Trade-offs reales: escalabilidad vs control, simplicidad vs revocación
  • Implementación de filtros personalizados (JWT) vs form login (sesión)
  • Tests de seguridad con MockMvc validando flujos de autenticación y autorización
  • Cuándo elegir cada enfoque según el contexto del proyecto

Cada rama incluye tests que validan la configuración de seguridad y documentación técnica explicando las decisiones de diseño.


Ramas del proyecto

Navega a la implementación que quieres explorar:


Tecnologías utilizadas

  • Java 21
  • Spring Boot
  • Spring Security
  • Maven
  • JWT (rama auth-jwt)
  • Spring Data JPA
  • Base de datos relacional (MySQL como ejemplo)

Ejecución

Cada implementación puede ejecutarse de forma independiente desde su rama correspondiente:

mvn spring-boot:run
# o 
docker compose up --build -d

Para ejecutar tests:

mvn test

Licencia

Este proyecto está licenciado bajo la Apache License 2.0. Consulta el archivo LICENSE para más información.


Autor

HC-ONLINE.

About

Sistema de autenticación en Java con Spring Boot y Spring Security que compara dos enfoques: JWT (stateless) y sesiones (stateful), documentando decisiones de diseño, trade-offs y casos de uso reales.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors