Skip to content

SergioRicart/spring_security_user_api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tecnologías y Herramientas

  • Java 21: Versión LTS .
  • Spring Boot 3.4.0: Módulos Web, Data JPA, Security y Validation.
  • MySQL: Base de datos relacional.
  • DBeaver: Cliente para la conexión a la base de datos durante el desarrollo.
  • OpenAPI / Swagger: Documentación y pruebas de los endpoints.

Desarrollo y Arquitectura

He aplicado buenas prácticas manteniendo una arquitectura sencilla y funcional:

  • Configuración: Uso de application.yml por ser un estándar más limpio y estructurado en la industria frente a los archivos properties.
  • Uso de DTOs: Utilización de DTOs. La entidad User no se devuelve directamente, para que la contraseña no se expongan.
  • Manejo de Errores: Control de errores en GlobalExceptionHandler (@RestControllerAdvice). Captura de todos los errores de la aplicación

Decisiones de Seguridad

Medidas de seguridad implementadas para cumplir con los requisitos técnicos:

  1. Identificadores UUID: El id es un UUID. Esto previene ataques de enumeración y oculta el volumen total de usuarios registrados.
  2. Encriptación: Contraseñas encriptadas antes de guardarse en la base de datos.
  3. Gestión del Token: El token y tokenExpiration se guardan en base de datos. El filtro TokenAuthenticationFilter intercepta las peticiones, extrae el token y valída en base de datos su existencia y caducidad.

Cómo ejecutar el proyecto

  1. Ejecuta el script src/main/resources/nethits_db.sql en tu servidor MySQL para crear la base de datos y la tabla.
  2. Configura las variables de entorno definidas en el application.yml: ${DB_URL}, ${DB_USER} y ${DB_PASS} para conectar con tu base de datos local.
DB_URL=jdbc:mysql://localhost:3306/nethits?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
DB_USER=nethits_user
DB_PASS=thunder-ivory-canyon-mist-horizon-copper-voyage-sapphire-echo-prairie-cinder-aurora-quartz-river-summit-dusk
  1. Arranca el contenedor docker en caso de no disponer de base de datos.
  2. Arrancar la aplicación con mvn clean spring-boot:run

About

REST API segura de gestión de usuarios con Spring Boot 3.4, JWT/Token auth, MySQL y OpenAPI/Swagger.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages