Выбор ответа Middle Аутентификация спрашивают часто обновлено

Как отозвать JWT

Вопрос

Сотрудника уволили, его access JWT живёт ещё 12 часов. Как сделать, чтобы он перестал работать сразу?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Держать на сервере deny-list отозванных токенов (или версию сессии) и проверять его в каждом запросе. Сервер проверяет только подпись и сроки, поэтому для отзыва нужен серверный стейт: deny-list по jti или номер версии токенов у пользователя.

Варианты ответа

  1. Отправить сотруднику push-уведомление, которое удалит токен из его localStorage и кук
  2. Никак: JWT принципиально нельзя отозвать, остаётся ждать окончания 12 часов
  3. Переписать exp в выданном токене на прошедшую дату и разослать обновлённую версию
  4. Держать на сервере deny-list отозванных токенов (или версию сессии) и проверять его в каждом запросеправильный ответ

Разбор

Сервер проверяет только подпись и сроки, поэтому для отзыва нужен серверный стейт: deny-list по jti или номер версии токенов у пользователя. Короткий access плюс отзываемый refresh сводит проблему к минутам. Push-уведомлением достать токен с чужого устройства нельзя, а копию сотрудник мог сохранить. Утверждение «никак» неверно: отозвать можно, просто ценой хранилища. Изменить exp нельзя: токен уже у клиента, а любая правка сломает подпись.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме