Package br.com.vantroba.bi.transporte.seguranca


package br.com.vantroba.bi.transporte.seguranca
Camada de segurança específica do app (decisão 0011 / etapa 07): a policy de proteção das views e o fluxo de login Google. O motor genérico de auth (validador Firebase RS256, sessão JWT HS256, CSRF, Bearer estático, config auth.*) vem da lib compartilhada br.com.xadm.comum.seguranca (artefato br.com.xadm:xadm-seguranca); aqui fica só o que é do app.

Conteúdo local: a ViewSecurityRule + a ViewWhitelist base (o que dispensa sessão de view) e os handlers de rejeição que respondem em ProblemDetail (RFC 7807, API) ou redirecionam para login (views); o controller de login em si agora vem da lib compartilhada (br.com.xadm:xadm-seguranca), não é mais local. As duas portas seguem: Bearer estático em /api/** para integrações, login Google nas views (bypass em dev/test, fail-closed em prod).

  • Classes
    Class
    Description
    Rede de segurança para AuthException que escape sem tratamento inline (o LoginController traduz as suas próprias no fluxo normal).
    Tradução das rejeições do micronaut-security (5.x lança AuthorizationException) preservando o comportamento do antigo AuthFilter: autenticado sem permissão (AuthorizationException.isForbidden()) → 403; view anônima, browser (Accept: text/html) → 302 /login?from=…; view anônima, script (JSON) → 401; view em fail-closed (prod sem envs de auth) → 503; path whitelisted (ex.: /api sem Bearer) → 401.
    Regra de segurança das views, replicando o tri-estado do antigo AuthFilter: enabled (envs de auth completas): path de view exige Authentication — autenticado → ALLOWED, anônimo → REJECTED (o ViewRejectionHandler faz 302/401); bypass (dev/test sem envs): view liberada (ALLOWED) — views públicas; fail-closed (prod sem envs): view rejeitada (REJECTED) — o handler responde 503.
    Whitelist da CAMADA DE VIEWS — os paths que a ViewSecurityRule dispensa de sessão.