Projeto de arquitetura multi-tenant com autenticação JWT usando Keycloak.
- Taskflow Service: http://localhost:8081
- Documentação Swagger: http://localhost:8081/swagger/index.html
- Keycloak: http://localhost:8080
- Keycloak Admin: http://localhost:8080/admin (admin/admin)
- Jaeger: http://localhost:16686
- Prometheus: http://localhost:9090
- LocalStack Web: http://localhost:3000
- PostgreSQL (Aplicação): localhost:5432
- PostgreSQL (Keycloak): localhost:5433
- Redis: localhost:6379
-
Iniciar todos os serviços:
docker-compose up -d
-
Aguardar inicialização completa:
# Verificar status dos serviços docker-compose ps # Acompanhar logs do Keycloak (pode levar alguns minutos) docker-compose logs -f keycloak
-
Obter tokens JWT para testes:
./development-environment/keycloak/get-tokens.sh
-
Testar a API com autenticação:
curl -H "Authorization: Bearer YOUR_TOKEN_HERE" http://localhost/api/v1/tasks
| Username | Password | Tenant ID | Role | Uso |
|---|---|---|---|---|
| testuser1 | password123 | 550e8400-e29b-41d4-a716-446655440001 | user | Usuário do Tenant 1 |
| testuser2 | password123 | 550e8400-e29b-41d4-a716-446655440002 | user | Usuário do Tenant 2 |
| admin | admin123 | 550e8400-e29b-41d4-a716-446655440000 | admin | Usuário Administrador |
Este projeto utiliza Keycloak para autenticação e autorização com suporte a multi-tenancy através de JWT tokens.
- Isolamento por Tenant: Cada usuário pertence a um tenant específico
- Tokens JWT: Autenticação stateless com claims personalizadas
- Roles: Sistema de permissões baseado em roles
- Multi-tenancy: Separação de dados por tenant_id
{
"sid": "user-id",
"preferred_username": "testuser1",
"email": "testuser1@taskflow.com",
"tenant_id": "550e8400-e29b-41d4-a716-446655440001",
"realm_access": {
"roles": ["user"]
}
}Para mais detalhes sobre autenticação, consulte: Keycloak README
cd taskflow-service
make build-imagecd taskflow-service
make test# Todos os serviços
docker-compose logs -f
# Serviços específicos
docker-compose logs -f taskflow-service
docker-compose logs -f keycloak
docker-compose logs -f nginx# Parar todos os serviços
make stop
# Parar e remover volumes (cuidado: apaga dados!)
make stop clean