Sobes.tech
Back to questions
Senior
6

Если refresh token утёк/скомпрометирован, как вы это обработаете? Учитывая, что JWT самодостаточный токен.

Companies where asked
Zuru Tech

Answer from AI

sobes.tech AI

Если refresh token скомпрометирован, несмотря на то, что JWT — самодостаточный токен, нужно предпринять меры для минимизации ущерба:

  • Хранить refresh tokens в базе данных с возможностью отзыва. В отличие от access token (JWT), refresh token должен быть связан с записью в БД, где можно пометить его как отозванный.

  • При обнаружении компрометации — аннулировать скомпрометированные refresh tokens. Это делается путём удаления или пометки в БД.

  • Использовать короткий срок жизни access token и более длительный для refresh token. Это ограничивает время действия скомпрометированного access token.

  • Внедрять механизмы обнаружения подозрительной активности. Например, мониторинг IP, устройств, частоты запросов.

  • Обеспечить возможность принудительного выхода пользователя из всех сессий. Это позволит быстро отозвать все токены.

  • Реализовать ротацию refresh token. При каждом использовании refresh token выдавать новый и аннулировать старый.

Пример схемы обработки:

  1. Клиент отправляет refresh token для получения нового access token.
  2. Сервер проверяет refresh token в базе: валиден ли, не отозван ли.
  3. Если валиден — выдаёт новый access token и новый refresh token, старый refresh token аннулируется.
  4. Если refresh token скомпрометирован — сервер отклоняет запрос и требует повторной аутентификации.

Таким образом, несмотря на самодостаточность JWT, для refresh token нужна серверная проверка и управление состоянием, чтобы обеспечить безопасность и возможность отзыва.