Основные понятия и использование токена доступа и токена обновления для входа в Node.js (Express.js) - PullRequest
0 голосов
/ 13 января 2019

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

Сначала, когда пользователь успешно вошел в систему, сервер выдает токен доступа и токен обновления. Затем сервер отправляет информацию о пользователе (идентификатор, имя, класс) в токене доступа.

В настоящее время токен обновления сохраняется в базе данных вместе с идентификатором пользователя и не доставляется клиенту.

Токен доступа имеет период 7 дней, и если клиент возвращается в течение 3 дней, аутентифицируйте пользователя через существующий токен доступа.

Если токен доступа был более 3 дней, сервер использует user_id для запроса токена обновления, хранящегося в базе данных. В это время, если токен обновления действителен, сервер попытается переиздать 7-дневный токен доступа.

Я хочу управлять пользователями таким образом, это правильно?

Я думаю, что сервер не должен передавать клиенту токен обновления.

Я прочитал следующее, но я не знаю, как это сделать правильно. Спасибо за ваш совет.

1 Ответ

0 голосов
/ 13 января 2019

Похоже, вы хотите реализовать полный рабочий процесс OAuth для аутентификации. Я бы посоветовал вам против сложности, если ваше приложение действительно нуждается в этом. Для одного API это нормально, если вы выдадите токен JWT и передадите его потребителю, тогда приложение будет использовать этот токен в запросах, и сервер аутентифицирует токен.

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

Я рекомендую вам этот пакет для работы с Express и Oauth: https://www.npmjs.com/package/express-oauth-server

...