@Suyano
Новичок

Как сделать быструю и надежную авторизацию для WebSocket?

Добрый вечер!

У меня есть 10 устройств, которые удаленно управляются по протоколу WebSocket. Каждое устройство имеет свой Wifi модуль (ESP8266), который является WebSocket клиентом. Все эти устройства подключаются к главному WebSocket серверу, где я сделал следующую схему авторизации:

1) При подключении каждый клиент отправляет свой уникальный ключ, который уже забит в БД сервера.
2) Сервер принимает этот ключ и сверяет его с ключом из БД.
3) Если ключи совпадают => клиент может отправлять свои данные, иначе соединение обрывается.

На данный момент это работает, но я не уверен, верное ли это решение? Возможно есть более простые варианты авторизации? В качестве WebSocket сервера я использую Workerman (да, он написан на php, другие языки я не очень хорошо понимаю в данный момент, но буду рад советам).
  • Вопрос задан
  • 661 просмотр
Пригласить эксперта
Ответы на вопрос 3
Может с сервера присылать соль, а клиент присылает не код, а хэш от код + соль. И сервер соответсвенно так же генерит и сверяет. Таким образом запрос авторизации клиента будет всегда разный и код не перехватить.
Ответ написан
alekciy
@alekciy
Вёбных дел мастер
Нормальный вариант если у вас защита (шифрование канала) настроена. Если не настроена, то уже не принципиально что шлется. Код, хэш, соль... все будет перехватываемо и используемо.
Ответ написан
@dplsoft
соглашусь с Алексей Сундуков. поднимайте wss.
пока не поднят wss говорить об авторизации можно только если у вас есть второй канал до вашего устройста. скажем, вы посылаете по sms код на устройство, который оно использует как ключ при очередном подклбчении. этакая 2х факторая авторизация для ботов.

но один фиг, повторю - поднимайте wss, иначе при желании вам в канал влезут подменой пакетов и т.п. и будет уже не важно, что вы успешно идентифицировали ваше устройство..
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы