Skip to content

devfullcycle/fc4-arq-multi-tenancy

Repository files navigation

fc4-arq-multi-tenancy

Projeto de arquitetura multi-tenant com autenticação JWT usando Keycloak.

Serviços Disponíveis

Aplicação Principal

Autenticação

Observabilidade

Bancos de Dados

  • PostgreSQL (Aplicação): localhost:5432
  • PostgreSQL (Keycloak): localhost:5433
  • Redis: localhost:6379

Quick Start

  1. Iniciar todos os serviços:

    docker-compose up -d
  2. 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
  3. Obter tokens JWT para testes:

    ./development-environment/keycloak/get-tokens.sh
  4. Testar a API com autenticação:

    curl -H "Authorization: Bearer YOUR_TOKEN_HERE" http://localhost/api/v1/tasks

Usuários de Teste

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

Autenticação JWT

Este projeto utiliza Keycloak para autenticação e autorização com suporte a multi-tenancy através de JWT tokens.

Características:

  • 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

Token Claims:

{
  "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

Desenvolvimento

Build da Aplicação

cd taskflow-service
make build-image

Executar Testes

cd taskflow-service
make test

Logs dos Serviços

# 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 os Serviços

# Parar todos os serviços
make stop

# Parar e remover volumes (cuidado: apaga dados!)
make stop clean

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors