Разница между токеном JWT expiration_delta и JWT Refresh Expiration Delta django jwt - PullRequest
0 голосов
/ 09 мая 2018

Я использую библиотеку django rest JWT

http://getblimp.github.io/django-rest-framework-jwt/

Существует две настройки по истечении срока действия токена JWT

JWT_EXPIRATION_DELTA в секундах

Документы на него:

Вы можете отключить проверку времени истечения, установив для JWT_VERIFY_EXPIRATION значение False. Без проверки истечения срока действия JWT будут существовать вечно, что означает, что утечка токена может использоваться злоумышленником в течение неопределенного времени. Это экземпляр Python datetime.timedelta. Это будет добавлено в datetime.utcnow () для установки времени истечения.

По умолчанию используется datetime.timedelta (секунд = 300) (5 минут).

и JWT_REFRESH_EXPIRATION_DELTA

Документы:

mit при обновлении токена, это экземпляр datetime.timedelta. Через сколько времени после исходного токена можно обновлять будущие токены.

По умолчанию используется datetime.timedelta (days = 7) (7 days).

Я не уверен в различных случаях использования. Я установил дельту истечения срока действия токена jwt на 20 секунд.

Затем получил токен, сохранил его в локальной сети, подождал 20 секунд, закрыл окно браузера и снова перешел на сайт

ожидается, что вход в систему не выполнен, так как срок действия токена истек, но я вошел в систему.

Так в чем же разница дельта истечения срока действия токена JWT

и JWT Обновить срок действия Дельта?

1 Ответ

0 голосов
/ 09 мая 2018

JWT_EXPIRATION_DELTA - это фактическое время работы вашего токена JWT. После упоминания времени в JWT_EXPIRATION_DELTA всякий раз, когда вы будете использовать этот токен для доступа к защищенной конечной точке (с включенной аутентификацией JWT), она будет возвращать ошибку с сообщением Your JWT Token has been expired. Поэтому вам нужно обновлять токен JWT до истечения срока его действия. Согласно документации:

Обновление с токенами может повторяться (token1 -> token2 -> token3), но в этой цепочке токенов хранится время, в течение которого исходный токен (полученный с использованием учетных данных имени пользователя / пароля), отображается как orig_iat. Вы можете продолжать обновлять токены только до JWT_REFRESH_EXPIRATION_DELTA

Это означает, что независимо от того, сколько раз вы обновляете свои токены, он всегда будет вести учет исходного времени, когда был сгенерирован ваш первый токен (Первый раз, когда вы вошли в свой пользователь). Поэтому, если для JWT_REFRESH_EXPIRATION_DELTA установлено значение 1 день, вы не сможете обновлять свой токен JWT по истечении 1 дня с момента создания исходного токена (означает время, в течение которого генерировался 1-й токен).

Не знаю, какой механизм вы используете для проверки в веб-интерфейсе, аутентифицирован ли пользователь или нет. Но если вы используете его для проверки на бэкэнде (DRF-JWT предоставляет некоторые готовые конечные точки для проверки и обновления токенов), вы обнаружите, что он не будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...