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-securitycompleto: 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.