Лучшая практика с использованием JWT refre sh token в nodejs - PullRequest
0 голосов
/ 16 января 2020

Я использую JSON веб-токены для аутентификации в моем приложении-реактиве. Когда пользователь входит в систему, токен создается и отправляется пользователю для хранения в локальном хранилище. Токен действителен в течение 24 часов. Каждый раз, когда вызывается сервер (nodejs), токен отправляется в заголовке.

Проблема в том, что через 24 часа пользователь должен снова войти в систему. Я не хочу этого, поэтому я начал искать решения. Решение, которое я нашел: refre sh tokens.

Мой подход пока что. Пожалуйста, исправьте меня, если я делаю что-то не так.

1) Пользователь входит в систему. токен аутентификации и refre sh токен отправляются на Пользователь хранить в локальном хранилище. (Это достаточно безопасно?)

2) Пользователь хочет изменить свой профиль. Я отправляю запрос на сервер с токеном auth в заголовке.

3) Сервер получает токен auth. Если токен аутентификации все еще действителен, делайте все, что нужно. Если срок действия токена истек, проверьте, есть ли у пользователя refre sh токен (он все еще действителен). На данный момент я застрял. Должен ли я отправить новый запрос с сервера пользователю с вопросом "у вас есть refre sh токен?" и если да, отправьте этот refre sh токен на сервер, чтобы создать новый токен аутентификации?

Проблема для меня заключается в следующем:

Допустим, пользователь хочет получить последний 10 сообщений из списка. На сервер отправляется запрос с токеном аутентификации .

=> токен аутентификации действителен : ответ представляет собой список из 10 сообщений

=> токен авторизации недействителен : ответ представляет собой новый запрос от сервера к клиенту для refre sh токен

Это 2 разных ответа. Разве это не испортит мой код на стороне клиента? Как мне справиться с этим?

Альтернативой может быть отправка аутентификационного токена И refre sh токена в каждом запросе. Но имеет ли это смысл?

1 Ответ

0 голосов
/ 16 января 2020

Вы имеете в виду refre sh токенов, как в OAuth2? Если это так, они обычно используются только с серверами клиентов (не приложениями браузера). Использование токена refre sh требует аутентификации клиента для получения нового токена доступа, что отличает его от простой отправки токена доступа к ресурсу (который обычно дает доступ сам по себе).

Как таковой не ясно, что использование refre sh токенов добавляет сюда что-нибудь. Если вы считаете, что достаточно безопасно, чтобы люди входили в ваше приложение более 24 часов, почему бы просто не продлить сеанс и продлить срок действия выдаваемого токена?

Что касается хранения, безопасная информация в локальном хранилище обычно не одобряется . Если вы уверены, что у вас нет уязвимого внешнего Javascript, и вы используете очень строгий заголовок Политика безопасности контента со своим сайтом, чтобы предотвратить любые встроенные Javascript или нежелательные источники, и ваше приложение не супер высокий риск, тогда все может быть в порядке.

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