Как истечь существующий токен JWT? - PullRequest
2 голосов
/ 24 апреля 2019

В моей новой компании наш OAuth-поток

  1. Пользователь вводит имя пользователя и пароль.
  2. Служба паролей аутентифицирует ее и обращается к центральной службе Oauth (разработанной внутри компании).
  3. Сервис Oauth генерирует некоторый access_token (AT) и сохраняет его в БД с истечением срока действия.
  4. В следующий раз, когда пользователь придет, AT отправляет cookie-файл, и приложение проверяет его с помощью служб Oauth из БД и обновляет время истечения срока действия. увеличить его в БД.

Теперь я планирую перевести его на аутентификацию на основе JWT. Согласно моему пониманию из другого учебника, сам токен JWT содержит подпись это можно проверить без какого-либо хранилища (кеш или БД). Мой вопрос об обработке увеличения времени истечения. Как мне нужно увеличить время сеанса каждый раз, когда пользователь заходит на сайт, это означает, что мне нужно сгенерировать новый токен JWT и истечь срок действия предыдущего. Создать новый - простая задача, не знаю как может истечь существующий токен JWT?

Я могу хранить карту в кеше, содержащем user_id и последний токен JWT. Остальные токены будут считаться недействительными. Но этот подход кеша на основе поражения цель токена JWT, где не должно быть никаких требований к хранилищу.

1 Ответ

0 голосов
/ 24 апреля 2019
  1. Сила JWT заключается в том, что его содержимое не может быть подделано конечным пользователем или любым злоумышленником, потому что если они это сделают, проверка не удастся.Итак, цель JWT - не избегать хранения.

  2. На сегодняшний день люди практически не выбрасывают какие-либо данные.JWT не являются исключением.Поэтому хранение JWT вместе со всеми связанными деталями и меткой времени имеет свою ценность.Кроме того, есть некоторые соображения производительности.Этот ответ предоставит некоторые подробности в этой строке: https://stackoverflow.com/a/55404253/1235935

  3. Увеличение срока действия обрабатывается с использованием второго токена, называемого токеном обновления (может быть JWT), который обычно имеет гораздо более длительный срок действия, чем токен доступа.Если пользователь возвращается в течение срока действия маркера обновления, ему не нужно вводить учетные данные.Это подробно описано в RFC OAuth2.

...