Отзыв JWT токенов
JWT по своей природе stateless — сервер не хранит информацию о сессиях, поэтому отозвать выданный токен напрямую нельзя. Как только появляется необходимость управлять сессиями (logout, блокировка пользователя), JWT перестаёт быть полностью stateless.
Blacklist токенов
Стандартное решение — хранить отозванные access token в Redis с TTL равным оставшемуся времени жизни токена. JwtFilter при каждом запросе проверяет, нет ли токена в blacklist. Когда токен протухает — запись из Redis удаляется автоматически.
Мультидевайс
Для поддержки нескольких устройств в refresh token добавляется claim deviceId. Это позволяет:
- Logout с одного устройства — отозвать только refresh token конкретного устройства
- Выйти со всех устройств — удалить все refresh tokens пользователя разом
Альтернативы
Если требуется полноценное управление сессиями, стоит рассмотреть BFF-паттерн с OIDC-провайдером (Keycloak, Spring Authorization Server), где токены хранятся на сервере и не попадают в браузер.