advanced

Rate limits и API auth

Защищайте API через scoped credentials, authorization checks, quotas, burst limits, retry-after guidance и abuse monitoring.

Public и partner API нуждаются в **authentication**, **authorization** и **rate limits** как в одной системе — лимиты без identity легко обойти; auth без квот приглашает abuse.

Паттерны auth:

  • **API keys** для server-to-server (scoped, rotatable, не во frontend bundles).
  • **OAuth2/OIDC** для user-delegated access (короткоживущие access tokens, rotation refresh).
  • **mTLS** или signed requests для high-trust B2B.

Authorization на каждый запрос: subject, action, resource, tenant context. Fail closed.

Измерения rate limiting:

  • Per key / user / IP / tenant.
  • Token bucket или sliding window для burst + sustained limits.
  • Отдельные бюджеты для дорогих endpoints.
					HTTP/1.1 429 Too Many Requests
Retry-After: 60
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1710000060

{"type":"rate_limit_exceeded","detail":"Try again in 60 seconds"}
				

На интервью: 401 vs 403, хранение hashed API keys, distributed rate limiting (Redis), graceful degradation под атакой.

Типовые ошибки: лимиты только по IP (боль NAT), нет Retry-After, authZ только в одном слое, долгоживущие tokens без rotation.

Компромисс: строгая безопасность против developer friction — документируйте квоты, sandbox keys, self-service rotation.

Чеклист:

  • Scoped credentials с least privilege.
  • 429 с Retry-After и limit headers.
  • Центральная authZ policy или согласованный middleware.
  • Мониторинг abuse и аномальных всплесков.