2015-11-30 6 views
1

Я новичок в JWT и flask-jwt. Я реализовал flast-jwt в своем проекте. Ток доступа, полученный из flask-jwt, не истек даже после того, как я изменил пароль пользователя. Тогда как можно предотвратить использование старого флажка-jwt токена.Как я могу предотвратить использование старого токена flask-jwt при смене пароля

+0

решил эту проблему, сохранив все созданные токены в нашем db. –

ответ

2

Это конус использования токенов JWT без гражданства - вы не можете их явно аннулировать.

Соответствующий профессионал - вам не нужно связываться с внешней службой, чтобы проверить их.

+0

Мы не можем явно аннулировать токен flask-jwt. Все нормально. Тогда как я могу это предотвратить. Я не понял вторую строчку. –

+0

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

3

Мы можем создать дополнительный уровень безопасности, сохранив все токены в нашей БД. При проверке токена мы можем проверить, что этот токен генерируется самим сервером или нет, используя эту таблицу базы данных. Также мы можем отменить токен, когда пользователь сбрасывает пароль, только удаляет этот токен из базы данных.

2

Важно иметь в виду, что (апартийные) токены JWT недействительны ТОЛЬКО когда они истекают или когда общий секрет, используемый для их подписания, изменяется.

Так в основном, выбор:

  • Используйте базы данных как @ savad-кп предложил, чтобы сохранить список черного списка/отозванные лексем: Это означает, что вы должны запросить его каждый раз, когда вы проверяете токен, что подрывает один из основных преимуществ использования токенов JWT.
  • Положитесь на короткоживущих токенов доступа: что означает, что клиенты должны часто повторной аутентификации, который может быть вариант не годен специально для мобильных устройств и веб-приложений.
  • Используйте token freshness pattern или какой-либо другой пользовательский вариант:

[...] Вы можете отметить некоторые маркеры доступа, как свежие, так и других, как не свежее, и использовать fresh_jwt_required декоратора, чтобы только свежие токены для доступа к некоторым конечным точкам.

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

Я также хотел бы предложить, используя flask-jwt-extended плагин вместо колбу-JWT один. Он поддерживает некоторые распространенные шаблоны из коробки (обновлять токены, токенную свежесть), а также черные списки и токены, отменяющие бит db.

 Смежные вопросы

  • Нет связанных вопросов^_^