Class XadmLoginRateLimitFilter
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/** entrou com o SmokeSessionController: endpoint que troca token
estático por sessão sem freio de brute-force é convite, e a peça já existia — reusar custou
um padrão a mais na anotação. O contador é o mesmo (por IP), então o smoke divide a janela com o
login do mesmo IP — irrelevante na prática (o smoke faz uma chamada por deploy).
Promovido de integrador-server para xadm-seguranca (spec 007, A2): qualquer app
que dependa da lib herda o piso (antes só 1 dos 5 apps tinha freio 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)
-