Class SessionAuthenticationFetcher

java.lang.Object
br.com.xadm.comum.seguranca.SessionAuthenticationFetcher
All Implemented Interfaces:
io.micronaut.core.order.Ordered, io.micronaut.security.filters.AuthenticationFetcher<io.micronaut.http.HttpRequest<?>>

@Singleton @Requires(property="auth.session-secret", pattern=".+") public class SessionAuthenticationFetcher extends Object implements io.micronaut.security.filters.AuthenticationFetcher<io.micronaut.http.HttpRequest<?>>
AuthenticationFetcher nativo das views: lê o cookie xadm_session (JWT HS256 emitido pelo SessionTokenService) e, se válido, devolve uma Authentication com o papel ROLE_VIEW.

Mantém o contrato dos atributos de request (AuthSupport.AUTH_EMAIL_ATTR etc.) que o GlobalViewModel e o CsrfTokens consomem. Coexiste com o TokenAuthenticationFetcher do Bearer (/api/**): cada fetcher resolve a sua credencial.

Bean condicional: só existe quando auth.session-secret está configurado. Sem ele (dev/test em bypass) não há fetcher — a regra de view libera as views. Gate pattern = ".+": com notEquals = "" e a property ausente o fetcher subiria, o SessionTokenService dele não instanciaria e, com ele, o SecurityFilter — 500 em tudo.

  • Field Details

    • ROLE_VIEW

      public static final String ROLE_VIEW
      Papel atribuído à sessão de view autenticada.
      See Also:
    • ROLE_SMOKE

      public static final String ROLE_SMOKE
      Papel do principal não-humano do smoke de produção (SmokeSessionController). Vem do claim role do JWT e acompanha o ROLE_VIEW — sem ele o smoke não navegaria nenhuma rota logada, que é o motivo de existir. O que o distingue é o SmokeReadOnlyFilter, que corta qualquer método não-seguro para este papel.
      See Also:
  • Constructor Details

    • SessionAuthenticationFetcher

      public SessionAuthenticationFetcher(SessionTokenService sessionTokenService, AuthSettings settings)
      Cria o fetcher de sessão.
      Parameters:
      sessionTokenService - serviço de validação do JWT de sessão.
      settings - configurações de auth (segredo usado para derivar o CSRF).
  • Method Details

    • fetchAuthentication

      public org.reactivestreams.Publisher<io.micronaut.security.authentication.Authentication> fetchAuthentication(io.micronaut.http.HttpRequest<?> request)
      Specified by:
      fetchAuthentication in interface io.micronaut.security.filters.AuthenticationFetcher<io.micronaut.http.HttpRequest<?>>