Используя Node.js / Express.js, каков наилучший способ реализации аутентификации пользователей на двух серверах? - PullRequest
0 голосов
/ 25 марта 2019

Моя настройка следующая. У меня есть один узел / экспресс-веб-сервер (S1), который показывает все мои веб-сайты и реализует какую-то аутентификацию пользователя. С одного из веб-сайтов на S1 я хочу получить доступ / перенаправить на мой другой сервер node / express / socket.io (S2), который больше полагается на socket.io api. Как лучше всего подключиться к S2, используя учетные данные пользователя, уже полученные и проверенные S1? В частности, я не хочу отправлять учетные данные пользователя через queryString и не знаю, как получить доступ к параметрам учетных данных / запроса пользователя с помощью socket.id).

1 Ответ

0 голосов
/ 26 марта 2019

Аутентификация на основе токенов является типичным решением. Токены на основе JWT будут очень хорошо работать здесь. При входе пользователя вы генерируете токен JWT, который включает в себя некоторую форму идентификатора пользователя. Затем отправьте JWT на сервер S2 (например, через заголовок авторизации). Сервер S2 проверит подпись токена и получит его идентификатор пользователя. Некоторые предложения относительно JWT:

1) Лучше всего использовать подпись на основе RSA. Вы распространяете открытый ключ на S2, так что S2 может только проверять. И только S1 сможет подписать.

2) Старайтесь избегать включения конфиденциальных данных. Идентификатор пользователя, вероятно, в порядке, но электронная почта пользователя, вероятно, нет.

Если не JWT, то непрозрачные токены - еще один вариант. В этом случае вам нужно будет создать другую конечную точку «интроспекции» на S1, которая будет проверять токен. Затем S2 будет использовать его, чтобы проверить, является ли токен действительным. Непрозрачные токены обычно используются в тех случаях, когда предоставление идентификатора пользователя или любой другой информации, связанной с пользовательским контекстом, вообще невозможно. Кроме того, JWT, как правило, больше, чем непрозрачные токены (~ 1kb на 50-100b), что может быть критическим в некоторых случаях.

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