Class XadmLoginRateLimitFilter
java.lang.Object
br.com.xadm.comum.seguranca.XadmLoginRateLimitFilter
@Singleton
@ServerFilter({"/login/**","/smoke/**"})
@Order(-2147483628)
public class XadmLoginRateLimitFilter
extends Object
Rate limit COMPARTILHADO dos endpoints públicos que emitem sessão (piso de segurança): no máximo
auth.login-rate-limit-per-minute (default 60) tentativas por IP por janela no
POST /login/** e no POST /smoke/**. Excedeu → 429 (RFC-7807). Só o POST (a tentativa
de auth) é limitado; o GET da página passa.
O /smoke/** do SmokeSessionController entra porque troca token estático por
sessão, e sem freio de brute-force isso é convite. O contador é o mesmo (por IP): o smoke divide a
janela com o login do mesmo IP, o que é irrelevante na prática (uma chamada por deploy).
Qualquer app que dependa da lib herda o piso de brute-force.
Contador em memória por janela fixa, com teto de entradas. Fail-open: qualquer erro ao medir
→ deixa passar (rate limit nunca derruba o login legítimo). Atrás do Coolify/Traefik o IP real vem do
X-Forwarded-For. per-minute <= 0 desliga o filtro.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription@Nullable io.micronaut.http.MutableHttpResponse<?> filter(io.micronaut.http.HttpRequest<?> request)
-
Constructor Details
-
XadmLoginRateLimitFilter
-
-
Method Details
-
filter
@RequestFilter @Nullable public @Nullable io.micronaut.http.MutableHttpResponse<?> filter(io.micronaut.http.HttpRequest<?> request)
-