Нужно ли нам аутентифицировать пользователя в соединении websocket, если пользователь уже прошел аутентификацию на странице входа в систему или auth0?

#javascript #node.js #websocket #socket.io

Вопрос:

Я новичок в реализации веб-сокетов, в настоящее время я реагирую с приложением node js. Если пользователь зарегистрируется и войдет в систему, он будет перенаправлен на домашнюю страницу. Я пытаюсь интегрировать свое приложение с socket io для уведомлений и небольшого пользовательского чата. Я сомневаюсь, нужно ли мне также аутентифицировать пользователя при подключении к веб-сокету? Потому что пользователь уже попал на мою страницу, войдя в систему. Это необходимо ?

Комментарии:

1. Войдя в систему, я предполагаю, что пользователь получает сеанс? Вам нужно связать их сокет с сеансом (т. Е. Сохранить сокет в сеансе).

Ответ №1:

Вам нужно будет отправить токен, который вы получаете от Auth0 при инициализации клиента сокета. Затем в BE вам нужно проверить этот маркер.

Документы SocketIO

Комментарии:

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

2. @ChrisG спасибо, я здесь новенькая. Отредактировал мой ответ.

3. Никаких проблем 🙂 Однако я все равно не думаю, что это то, о чем спрашивает ОП. Они не спрашивают, как войти в систему socket.io, они спрашивают, нужно ли им это делать в первую очередь. Если они сохраняют сокет пользователя в сеансе сервера, я не думаю, что им нужно проверять подключение к сокету отдельно. Розетка Afaik. проверка подлинности ввода-вывода предназначена для ситуаций, когда весь трафик сервер-клиент проходит через сокет.

4. Это делает его интересным вопросом. Если вы хотите ограничить доступ к сокету для зарегистрированных пользователей, как бы вы это сделали, если бы у вас была аутентификация на основе JWT для вашего REST API? По крайней мере, в моем веб-приложении проверка JWT выполняется в промежуточном программном обеспечении в Express, поэтому сокеты останутся открытыми. Вот почему я также добавил аутентификацию сокетов. Однако я не уверен, как это работает в .NET или Spring, так что, возможно, это гарантирует лучший ответ.

5. Я предполагаю, что если страница входа защищена и у вас есть CORS, то подключение WS должно быть невозможно со страницы входа. Но если у вас есть незащищенный маршрут в том же домене, что помешает пользователю запустить некоторый код ввода-вывода сокета с консоли и прослушать его?