Правильная архитектура и поток аутентификации JWT - PullRequest
1 голос
/ 20 апреля 2019

Я создаю приложение, которое имеет внешний интерфейс для iOS и Android, а также Backend, состоящий из Flask API и базы данных MySQL.

В настоящее время наша аутентификация использует JWT.За исключением того, что я не уверен, что полностью понимаю, как это должно работать.

Я не знаю, где найти спецификации для JWT, поэтому когда я говорю JWT, я просто имею в виду полезную нагрузку JSON, зашифрованную с помощью библиотеки PyJWT.

В настоящее время истекает срок действиятокены случаются через 6 месяцев с момента их создания.Я чувствую, что это довольно небезопасная установка.

Из всех примеров, которые я видел, JWT имеют очень короткое время жизни, а затем есть некоторый «токен обновления», который обновляет его.

Но это все, что я знаю.Я не понимаю его достаточно хорошо, чтобы кодировать его на Python.

Может кто-нибудь помочь объяснить, что это за токен обновления, что именно он делает, как он создается и т. Д .?

ОБНОВЛЕНИЕ:

Что касается спецификаций для JWT, я прочитал это: https://tools.ietf.org/html/rfc7519

Здесь не упоминаются никакие токены обновления.

Итак, теперь мой вопрос: достаточно ли я защищен?

Стоит ли иметь конечную точку API logout, которая отправляет токен и добавляет его в черный список,так никто не может украсть его?

1 Ответ

1 голос
/ 22 июня 2019

Шесть месяцев для JWT слишком высоки и небезопасны.Вы могли бы хотеть держать это несколько часов или максимум день.Наряду с этим, у вас есть долгоживущий токен обновления (RT), который вы можете использовать для получения нового JWT.Функция токена обновления состоит в том, чтобы поддерживать долгоживущий сеанс (чтобы пользователь мог войти в систему в течение длительного периода времени), обнаруживать кражу токена (если вы продолжаете изменять RT при каждом использовании) - так как вы упомянули воровствои для того, чтобы вы могли использовать краткосрочные токены доступа (так как они выставляются по проводам чаще всего).И да, внесение в черный список JWT может быть хорошей идеей, но если вы держите их недолго, то зачем это делать?

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

...