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/healthnão-autorizado (agora noViewRejectionHandler). - ~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ãoequals(timing attack).
Verificação. Suíte completa verde; os integration/* de auth exercitam Bearer, login, CORS e views.