Pular para conteúdo

0011 — Autenticação em duas camadas

Status: Aprovado · Responsável: Gustavo Madruga · Atualizado em: 2026-06-11 · Decidido em: 2026-05-25

Contexto

A aplicação tem duas superfícies com audiências e ameaças diferentes: a API (consumida por máquina — o ERP/job do cliente) e as views server-rendered (/processamentos, /admin, consumidas por humanos da X-Adm).

Decisão

Duas camadas independentes:

  • /api/** — Bearer token estático via micronaut-security (@Secured("ROLE_API")).
  • Views — login Google (Firebase), restrito a e-mails @xadm.com.br; cookie de sessão JWT HS256 (xadm_session), gate no security/AuthFilter, token CSRF (_csrf) nos forms POST.

Sem as envs AUTH_*: em dev/test as views ficam públicas (bypass); em produção o acesso é fail-closed (503).

Consequências

  • As duas camadas evoluem isoladas — não mexer numa ao trabalhar na outra.
  • Procedimento de setup (Firebase, envs) no runbook operacao/google-auth.md.

Alternativas consideradas

  • OAuth2/JWT na API: excesso para um único cliente confiável com segredo compartilhado. Descartado.
  • Mesma auth para API e views: audiências incompatíveis (máquina vs humano). Descartado.