2017-02-19 5 views
3

Я очень новичок в JWT, и я закончил наследование кодовой базы, которая использует JWT. Теперь есть некоторые очень фундаментальные проблемы, с которыми я столкнулся, и я не нахожу ответов. Этот вопрос не основан на коде, поэтому, пожалуйста, несите меня.Обновление токена JWT (раздвижные сессии) и выписка

Скажем, мой токен JWT действителен в течение 4 часов. Вот мои требования/ограничения

  1. Если пользователь работает через 3 часа 59 минут. их сеанс должен быть расширен на 2 часа, и им не требуется повторно вводить учетные данные.

  2. Скрипт java на стороне клиента не должен кэшировать учетные данные пользователя каким-либо образом.

  3. Это нормально обновить токен JWT новым ... но вы не должны делать это при каждом запросе, который вы делаете на сервере. Таким образом, клиент должен быть умным, чтобы обновить токен JWT, когда настало время. Вы не должны пытаться выпустить новый токен при каждом запросе, который вы делаете в приложении, потому что мы закончим сценарий, в котором у нас есть 1000 активных токенов, сгенерированных в течение сеанса, и все они активны. это делает требование выписки еще более сложным.

  4. Как только пользователь нажимает кнопку выписки. токен JWT больше не должен использоваться. Несмотря на то, что срок его службы остается в силе.

  5. Если выдается сигнал. Все жетоны, которые были выпущены (как часть расширения сессии), должны быть признаны недействительными. Не только последний.

Я начинаю читать о JWT, но, похоже, мои требования не могут быть выполнены с JWT. эти требования очень легко встречаются с подходом идентификатора сеанса. но я пока не хочу отказываться от JWT.

ответ

3

JWT продление жизни

Вы можете оформить JWT со старым. Ваше клиентское приложение должно запросить новый JWT, когда оно приближается к времени истечения срока действия. Клиент знает время истечения срока действия, считывая заявку exp, и может вызвать службу обновления, чтобы получить новый токен. Если клиентское приложение закрывается, то JWT истекает, и это будет необходимо для пользователя, чтобы представить полномочия снова

Выход

Рекомендуется, чтобы маркеры истекает, но вы можете использовать черный список для магазин JWT, которые остаются в силе, но не могут быть использованы для проверки подлинности:

  • Когда пользователь нажимает выход из системы

  • После обновления билет близко к expiratio п раз

Вам нужно будет добавить в JWT уникальный идентификатор jti. Черный список будет содержать jti и exp. Как только текущее время>exp запись может быть отброшена.

См. Invalidating client side JWT session