Pular para conteúdo

0007 — Admin CRUD protegido por filtro JWT dedicado

Status: Aprovado · Responsável: Gustavo Madruga · Atualizado em: 2026-06-30 · Decidido em: 2026-04-06

Contexto

Os endpoints administrativos (/api/admin/** — CRUD de clientes, usuários pAbast e a fila de aprovação OAuth) só podem ser acessados pela equipe xadm, identificada pelo claim xadm_admin no JWT.

Decisão

Um AdminAuthFilter (@ServerFilter("/api/admin/**")) intercepta toda requisição administrativa, valida o JWT interno com o JwtValidator e rejeita com 401 (ausente/inválido) ou 403 (xadm_admin falso) antes de chegar ao controller.

Consequências

  • Separação clara: o filtro autentica/autoriza; o controller só executa o CRUD.
  • Em testes, @MockBean(JwtValidator) isola filtro e controller sem emitir JWTs reais.
  • Toda rota nova sob /api/admin/** já nasce protegida — sem repetir lógica de auth em cada método.

Alternativas consideradas

  • micronaut-security completo: framework inteiro para um caso de uso simples. Descartado (à época).
  • Anotação por método, sem filtro: repetiria a lógica de auth em cada handler. Descartado.