Este microservicio es el componente de gestión de negocio de un ecosistema distribuido. Ha sido diseñado bajo los principios de Clean Architecture para demostrar la interoperabilidad entre diferentes stacks tecnológicos.
El objetivo principal de este proyecto es demostrar cómo un servicio en Java puede confiar en la identidad gestionada por un servicio externo en Python, compartiendo una capa de seguridad basada en JWT (JSON Web Tokens) y una infraestructura común en Docker.
- Java 21 (LTS)
- Spring Boot 3.4
- Spring Security (Protección de rutas y filtros JWT)
- Spring Data JPA (Persistencia de datos)
- PostgreSQL 15 (Corriendo en contenedor Docker)
- Lombok (Reducción de código boilerplate)
- Maven (Gestión de dependencias)
Este servicio no posee un módulo de registro de usuarios. En su lugar:
- Recibe una solicitud con un
Authorization: Bearer <token>. - Valida la firma del token usando una
SECRET_KEYcompartida con el microservicioms-auth(Python). - Extrae el
user_iddel token para filtrar y guardar las tareas de forma aislada por usuario.
Parte de un ecosistema políglota:
🔐 ms-auth (Python/FastAPI) : [email protected]:LuisChacha/fastapi-clean-architecture-auth.git
✅ ms-tasks-java (Este repositorio)
No olvidar cambiar el token(obtenido en el login del ms-auth de python) en los siguientes comandos:
curl -X GET http://localhost:8080/api/v1/tasks/test -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzMyODU0MjEsInN1YiI6IjEifQ.SjfNvbl8eJ7YP53aaUpLtoKBL0NPNw-XhKAuknouHI4"Output:
Microservicio de Tareas (Java) respondiendo correctamente 🚀
curl -X POST http://localhost:8080/api/v1/tasks/ \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzMyODk0OTIsInN1YiI6IjEifQ.HkKvaqCby6dmilo8BBb7IiXtMlPOCBO1E5Vam4om18E" \
-H "Content-Type: application/json" \
-d '{"title": "Tarea desde terminal3", "description": "Probando arquitectura políglota3"}'
curl -X GET http://localhost:8080/api/v1/tasks/ \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzMyODk0OTIsInN1YiI6IjEifQ.HkKvaqCby6dmilo8BBb7IiXtMlPOCBO1E5Vam4om18E" \
-H "Content-Type: application/json"
Este microservicio forma parte de un ecosistema políglota, diseñado para gestionar tareas (To-Do) utilizando Clean Architecture.
-
Configurar el entorno: Asegúrate de tener corriendo el contenedor de PostgreSQL del proyecto
ms-auth. -
Variables de Entorno: Configura tu
application.propertiescon la mismaSECRET_KEYutilizada en el microservicio de Python. -
Ejecución:
./mvnw spring-boot:run
GET /api/v1/tasks/test - Público: Verifica la salud del servicio.
GET /api/v1/tasks/ - Privado: Lista las tareas del usuario autenticado.
POST /api/v1/tasks/ - Privado: Crea una nueva tarea asociada al ID del usuario en el token.