Цель: защитить логин от брутфорса и write-эндпоинты от злоупотреблений, не мешая нормальному трафику.
Зависимость: #10.
Что сделать
- Лимитировать
POST /api/auth/login (per username + per IP) и write-эндпоинты движений per user/IP.
- Bucket4j поверх Redis (распределённый счётчик — лимит общий для всех инстансов приложения, не per-JVM).
- При превышении —
429 Too Many Requests + заголовок Retry-After.
- Ключи и лимиты вынести в конфиг (попыток/окно), разные для login и write.
- Login-лимит — главная защита: считать неуспешные попытки, не блокировать после успешного входа здоровый трафик.
- Стретч: sliding window вместо грубых фиксированных окон; счётчик в Redis атомарный (без гонок при параллельных запросах); не штрафовать обычного пользователя за всплеск.
Acceptance criteria
Цель: защитить логин от брутфорса и write-эндпоинты от злоупотреблений, не мешая нормальному трафику.
Зависимость: #10.
Что сделать
POST /api/auth/login(per username + per IP) и write-эндпоинты движений per user/IP.429 Too Many Requests+ заголовокRetry-After.Acceptance criteria
Retry-After.