PassFront
  1. PassFront
  2. База знаний
  3. Аутентификация и сессии

Как устроена пара access и refresh токенов и зачем она нужна?

Аутентификация и сессии

Access-токен даёт доступ к API и живёт недолго, refresh-токен живёт дольше и нужен только для получения нового access-токена.

Зачем два

Если access-токен украден, он быстро перестаёт работать (обычно 5–15 минут). Долгоживущий refresh-токен отправляется редко и только на один эндпоинт, поэтому поверхность атаки меньше.

Как это работает

  1. Пользователь входит, сервер выдаёт пару токенов.
  2. Клиент отправляет access в Authorization: Bearer ....
  3. Сервер отвечает 401, когда срок истёк.
  4. Клиент вызывает /auth/refresh с refresh-токеном и получает новую пару.
  5. Если refresh тоже недействителен, пользователь входит заново.

Хорошие практики

  • Ротация: при каждом обновлении выдаётся новый refresh, старый перестаёт работать.
  • Обнаружение повторного использования старого refresh-токена: это сигнал кражи, все токены семьи отзываются.
  • На клиенте одновременные запросы с истёкшим токеном объединяют в один вызов refresh, чтобы не плодить обновления.

Коротко для собеседования

Короткий access снижает ущерб от кражи, а refresh с ротацией позволяет не просить пароль снова. Повторное использование refresh-токена означает компрометацию.

Другие вопросы раздела