Class AuthSupport
java.lang.Object
br.com.xadm.comum.seguranca.AuthSupport
Contrato estável de autenticação das views: os atributos de request que o
SessionAuthenticationFetcher popula após validar a sessão e que GlobalViewModel
e CsrfTokens leem, o nome do cookie de sessão, e helpers idênticos entre apps.
Reconciliação (onda-2): a whitelist de views (WHITELIST_*/
isWhitelisted) é policy de rota específica do app (ex.: /compras/ no
onpetro, /webhook/ no thoms) e fica local no app — não sobe pra lib. Aqui só o
que é byte-idêntico entre os 3 apps: constantes de contrato + deveRecusarAnonimo/
isHttps. Ver .ia/001-onda2-reconciliacao.md.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringAtributo de request onde o token CSRF de sessão fica exposto.static final StringAtributo de request onde o email autenticado fica exposto.static final StringAtributo de request onde o nome autenticado fica exposto.static final StringNome do cookie de sessão (JWT HS256). -
Method Summary
Modifier and TypeMethodDescriptionstatic io.micronaut.http.cookie.CookieauthCookie(String nome, String valor, long ttlSegundos, String path, io.micronaut.http.HttpRequest<?> request, boolean cookieSecure) Monta um cookie de auth com os atributos que a casa fixou:HttpOnly,SameSite=LaxeSecuresob HTTPS (direto, viaX-Forwarded-Protodo proxy, ou forçado porauth.cookie-secure).static booleandeveRecusarAnonimo(AuthSettings settings, @Nullable io.micronaut.security.authentication.Authentication auth) Defesa em profundidade para escritas sensíveis das views: em produção (auth configurada) recusa uma requisição que chegou sem autenticação.static booleanisHttps(io.micronaut.http.HttpRequest<?> request) Indica se o request está sob HTTPS (direto ou viaX-Forwarded-Protodo proxy).
-
Field Details
-
AUTH_EMAIL_ATTR
Atributo de request onde o email autenticado fica exposto.- See Also:
-
AUTH_NAME_ATTR
Atributo de request onde o nome autenticado fica exposto.- See Also:
-
AUTH_CSRF_ATTR
Atributo de request onde o token CSRF de sessão fica exposto.- See Also:
-
SESSION_COOKIE
-
-
Method Details
-
deveRecusarAnonimo
public static boolean deveRecusarAnonimo(AuthSettings settings, @Nullable @Nullable io.micronaut.security.authentication.Authentication auth) Defesa em profundidade para escritas sensíveis das views: em produção (auth configurada) recusa uma requisição que chegou sem autenticação. A regra de view já bloqueia paths não-whitelistados em prod; isto é o reforço no controller caso um path de escrita seja whitelistado por engano. Em dev/test (bypass, auth não configurada) não exige nada — senão quebraria o bypass das views.- Parameters:
settings- config de auth (fonte do "auth configurada?")auth- autenticação da requisição (pode sernullem bypass)- Returns:
truese deve recusar a escrita (prod + requisição anônima)
-
authCookie
public static io.micronaut.http.cookie.Cookie authCookie(String nome, String valor, long ttlSegundos, String path, io.micronaut.http.HttpRequest<?> request, boolean cookieSecure) Monta um cookie de auth com os atributos que a casa fixou:HttpOnly,SameSite=LaxeSecuresob HTTPS (direto, viaX-Forwarded-Protodo proxy, ou forçado porauth.cookie-secure). Ponto único: o cookie de sessão do login e o doSmokeSessionControllertêm de ser byte-idênticos em atributos — duplicar a receita é como um deles perde oSecuresem ninguém notar.- Parameters:
nome- nome do cookie.valor- valor do cookie.ttlSegundos- validade em segundos (0expira o cookie).path- path do cookie.request- a requisição (fonte do HTTPS efetivo).cookieSecure-auth.cookie-secure— forçaSecuremesmo sem HTTPS detectado.- Returns:
- o cookie pronto para
response.cookie(...).
-
isHttps
public static boolean isHttps(io.micronaut.http.HttpRequest<?> request) Indica se o request está sob HTTPS (direto ou viaX-Forwarded-Protodo proxy).- Parameters:
request- a requisição HTTP.- Returns:
truese sob HTTPS.
-