Files
nuxt-frontend/.codex/plans/IMPLEMENTACAO_INICIAL.md
2026-04-14 19:44:21 -05:00

3.3 KiB

Plano minimo de implementacao — comunicacao entre servicos com JWT

Objetivo

Implementar comunicacao minima entre servicos distribuidos onde:

  • o Auth Service autentica o usuario
  • o Auth Service emite o JWT
  • os outros servicos validam o JWT localmente
  • um servico pode chamar outro em nome do usuario, repassando o mesmo token
  • cada servico identifica o usuario autenticado pelo sub

Arquitetura minima

Auth Service

Responsavel por:

  • login
  • refresh token
  • emissao do JWT
  • distribuicao da chave publica para validacao nos demais servicos

Outros servicos

Responsaveis por:

  • receber Authorization: Bearer <token>
  • validar JWT localmente
  • extrair claims
  • montar contexto do usuario autenticado

Comunicacao entre servicos

Quando um servico chamar outro em nome do usuario:

  • repassar o mesmo header Authorization

Contrato minimo do JWT

Exemplo:

{
  "sub": "uuid-do-usuario",
  "iss": "https://auth.seusistema.com",
  "aud": "internal-apis",
  "iat": 1776110000,
  "exp": 1776110900
}

Claims minimas

  • sub: identificador do usuario
  • iss: emissor
  • aud: audiencia
  • iat: emissao
  • exp: expiracao

Regra importante

O identificador confiavel do usuario deve ser sempre o sub.

Nao confiar em:

  • user_id no body
  • x-user-id em header customizado
  • qualquer identificador separado do token

Escolhas tecnicas minimas

Algoritmo

  • RS256

Assinatura

  • Auth assina com chave privada
  • demais servicos validam com chave publica

Tempo de vida (MVP)

  • access token: 15 minutos
  • refresh token: 7 dias

Endpoints minimos do Auth

POST /auth/login
POST /auth/refresh

Login

Retorna:

{
  "access_token": "jwt_aqui",
  "refresh_token": "refresh_aqui",
  "token_type": "Bearer",
  "expires_in": 900
}

Refresh

Recebe refresh token e retorna novo access token + novo refresh token.

Middleware minimo em cada servico

Passos:

  1. ler Authorization
  2. extrair bearer token
  3. validar assinatura
  4. validar exp
  5. validar iss
  6. validar aud
  7. extrair claims
  8. montar usuario autenticado no contexto da requisicao

Resultado esperado no contexto:

{
  "id": "uuid-do-usuario"
}

Rotas protegidas minimas para teste

  • GET /profile/me
  • GET /dashboard

Cada rota deve:

  • exigir token valido
  • extrair sub
  • retornar dados do usuario autenticado

Ordem minima de implementacao

  1. definir contrato do token
  2. gerar chaves
  3. implementar login, refresh
  4. emitir JWT corretamente
  5. implementar middleware JWT em 1 servico consumidor
  6. proteger 1 rota simples
  7. replicar middleware nos demais servicos
  8. implementar propagacao de Authorization entre servicos

Criterios de sucesso do MVP

  1. login retorna access_token
  2. acesso direto a rota protegida funciona
  3. token invalido retorna 401
  4. token expirado retorna 401
  5. chamada A -> B preserva o mesmo sub

Fora de escopo agora

  • blacklist de tokens
  • revogacao imediata global
  • introspection por request
  • machine-to-machine token
  • gateway avancado

Resumo executivo

O minimo para funcionar:

  1. Auth emitir JWT assinado
  2. servicos validarem localmente
  3. sub como identificador confiavel
  4. propagacao do mesmo bearer token entre servicos