API REST segura de nivel empresarial diseñada para la gestión avanzada de usuarios, autenticación y control de acceso basado en roles (RBAC), protegiendo endpoints de misión crítica mediante JSON Web Tokens (JWT).
- Gestión Avanzada de Usuarios (RBAC): Autenticación robusta y control de acceso con roles jerárquicos (
ADMIN,USER,SUPPORT), asegurando que cada usuario acceda solo a los recursos permitidos. - Seguridad y Protección Stateless: Filtros personalizados con Spring Security para validar y decodificar JWT en cada petición HTTP, garantizando comunicaciones seguras sin estado.
- Operaciones CRUD Completas: Registro, inicio de sesión, activación, desactivación (soft delete) y administración integral del ciclo de vida de los usuarios en la plataforma.
- Manejo Global de Excepciones: Respuestas estandarizadas y amigables ante errores, validaciones fallidas o problemas de seguridad a través de un
@ControllerAdvice. - Documentación Interactiva: Integración nativa con OpenAPI (Swagger UI) para la visualización, exploración y prueba de todos los endpoints directamente desde el navegador.
| Capa | Tecnología |
|---|---|
| Backend REST Core | Java 21, Spring Boot 3, Spring Web |
| Capa de Seguridad | Spring Security, JJWT (JSON Web Token) |
| Persistencia de Datos | Spring Data JPA, Hibernate, PostgreSQL 15 |
| Pruebas y Utilidades | JUnit 5, Mockito, Lombok, Validation |
| Documentación API | Springdoc OpenAPI (Swagger UI) |
| Orquestación DevOps | Docker, Docker Compose, Maven |
La infraestructura de base de datos está contenerizada para garantizar un despliegue rápido y sin conflictos de configuración.
- Tener instalado Docker Desktop.
- Tener instalado Java 21 en tu máquina anfitriona.
Abre una terminal en la raíz del proyecto y levanta el servicio de PostgreSQL utilizando el orquestador:
docker-compose up -dEsto descargará la imagen de PostgreSQL 15 y levantará la base de datos
secure_users_dben el puerto 5432.
Inicia el servidor backend ejecutando el wrapper de Maven (no requiere instalación global de Maven):
En Windows (PowerShell):
.\mvnw spring-boot:runEn Linux / macOS:
./mvnw spring-boot:run- Abre tu navegador web y dirígete a: http://localhost:8080/swagger-ui/index.html
- Puedes interactuar con la interfaz Swagger para registrar nuevos usuarios, obtener tokens JWT y probar endpoints protegidos.
1. Registrar un nuevo usuario:
curl -X POST http://localhost:8080/api/auth/register \
-H "Content-Type: application/json" \
-d '{
"firstName": "Administrador",
"lastName": "Principal",
"email": "admin@example.com",
"password": "Password123"
}'2. Iniciar Sesión (Generar Token):
curl -X POST http://localhost:8080/api/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "admin@example.com",
"password": "Password123"
}'La API responderá con un token JWT firmado. Guárdalo para el siguiente paso.
3. Consumir Endpoint Protegido:
Incluye el token obtenido en el encabezado Authorization para cualquier petición segura:
Authorization: Bearer <TU_TOKEN_JWT>graph TD
A[Cliente REST / Swagger UI] -->|Petición HTTP + Token JWT| B(Filtro Spring Security)
B -->|Token Válido| C{Controladores REST}
B -->|Inválido / Sin Token| F[Error 401 / 403]
C -->|DTOs| D[Capa de Servicios]
D -->|Entidades JPA| E[(PostgreSQL 15)]
E -->|Datos| D
D -->|Respuestas| C
C -->|JSON| A
📁 config/- Configuraciones globales (Seguridad, CORS, Swagger OpenAPI).📁 controller/- Exposición de endpoints REST y manejo de peticiones HTTP.📁 dto/- Objetos de Transferencia de Datos (Request/Response).📁 entity/- Modelos de dominio mapeados a la base de datos relacional.📁 exception/- Control centralizado y manejo de excepciones globales (@ControllerAdvice).📁 repository/- Interfaces de persistencia utilizando Spring Data JPA.📁 security/- Lógica core de autenticación, filtros JWT yUserDetails.📁 service/- Lógica de negocio, validaciones y orquestación.
- Implementación de Refresh Tokens para mantener sesiones activas de forma segura.
- Flujo de Recuperación de Contraseña mediante envío asíncrono de correos electrónicos.
- Auditoría de Acciones (Logs) para trazabilidad en endpoints de administración.
- Dockerización del Backend para construir una red completa en Docker Compose.
- Pipelines de CI/CD para testing y despliegue automatizado.
Brayan Jair Chavez Oscor Ingeniería de Software / Arquitectura Backend
Desarrollado como demostración técnica de buenas prácticas en arquitectura de software seguro y APIs empresariales.