Обновление JWT и защита сессий в клиентском приложении - PullRequest
0 голосов
/ 04 мая 2019

У меня есть приложение реагирования с узлом / экспресс-сервером.В настоящее время я использую JWT для звонков на защищенные маршруты на сервере.Это все отлично работает.Но я хочу, чтобы пользователь входил в систему более 30 минут или около того.

Каков наилучший способ защиты сеансов или обновления токена доступа, когда он истекает в клиентском приложении?

Мои решения:

-Один:

Создание обновления и токена доступа.Пусть токен доступа будет недолгим.И подпишите токен обновления с уникальным идентификатором, данным пользователю в базе данных.Затем проверьте, проверьте токен с этим идентификатором.Затем, когда срок действия маркера доступа истечет, отправьте обратно 401, а затем получите токен обновления из локального хранилища, чтобы создать новые токены, а затем повторите вызов.

Проблема с этим: многоперемотка вперед и назад продолжается и кажется медленной.

-Два

Отправляет и токен обновления, и токен доступа при каждом вызове, и если токен доступа истекиспользуйте токен обновления для создания новых токенов, затем продолжите.

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

-Three

Отправьте срок действия токена доступа во внешний интерфейс, и если токен истек, отправьтеобновить токен и проверить его с помощью уникального идентификатора в базе данных.Затем сгенерируйте новые токены и продолжайте.

Проблема с этим: Не уверен, насколько это будет безопасно.Но на данный момент это кажется лучшим решением.

Так что мне интересно, каков наилучший способ обновления маркера доступа после его истечения, чтобы пользователь мог продолжать использовать платформу?

1 Ответ

0 голосов
/ 04 мая 2019

Я говорю это из опыта, а не из источника, но из всей идеи JWT, что это без сессии. есть другое решение для обработки сессий. С jwt вам не нужно сохранять его в своей базе данных, поскольку вы подписываете JWT с помощью секретного ключа, и вы можете просто проверить, что JWT был выпущен с использованием вашего секретного ключа. и вы можете сделать этот JWT действительным более 30 минут. Это совершенно нормально. Я сам установил его на 180 дней. и потому что это так долго, пользователь снова войдет в систему в это время, поэтому вам не нужно беспокоиться об истечении срока действия. но если вы хотите обработать это тоже, вы можете проанализировать его в своем интерфейсе и проверить его метку времени истечения и получить еще один JWT до его истечения.

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