Pular para conteúdo

0007 — Auth nativo micronaut-security (remove os filtros custom)

Status: Aprovado · Responsável: Gustavo Madruga · Atualizado em: 2026-07-07 · Decidido em: 2026-07-07

Contexto. A auth vivia em dois @Filter/HttpServerFilter custom (AuthFilter para a sessão das views, ApiBearerTokenFilter para o Bearer de /api/**). A constituição manda micronaut-security nativo (piso de segurança).

Decisão. Migrar para micronaut-security: StaticBearerTokenValidator + ApiBearerSecurityRule (Bearer /api/**), SessionAuthenticationFetcher + ViewSecurityRule (sessão das views, tri-estado) e ViewRejectionHandler (302/401/403/503, corpo RFC-7807). Paths públicos no intercept-url-map. Os dois filtros custom foram removidos. Detalhe: Segurança.

Consequências / trade-offs.

  • Comportamento preservado: Bearer estático, redirect de view anônima, o público /api/v1/powersync/lastchange, e a gravação de /api/health não-autorizado (agora no ViewRejectionHandler).
  • ~40 testes de filtro reescritos como testes de regra/validador (unit) + integração end-to-end.
  • Comparação do Bearer em tempo constante (MessageDigest.isEqual) — não equals (timing attack).

Verificação. Suíte completa verde; os integration/* de auth exercitam Bearer, login, CORS e views.