Есть сайт. Когда пользователь авторизуется, то попадает в личный кабинет. Там сразу же устанавливается WebSocket соединение с сервером для обмена определенными данными. При WebSocket соединении передаются логин/пароль пользователя. Хранить прямо в html страницы эти данные очень не безопасно, я считаю.
Сначала было так:
initSocketConnect(host, port, {
username: 'user1',
password: '96219fb9d5167cae28a6823b08ef2fd6',
reconnectPeriod: 4 * 1000
});
Где в качестве пароля передавался md5 пароля прям из БД, а сервер просто сравнивал строки.
Потом я сделал некоторый аналог Challenge-response:
initSocketConnect(host, port, {
username: 'user1',
password: '96219fb9d5167cae28a6823b08ef2fd6/12365',
reconnectPeriod: 4 * 1000
});
Там в поле пароля через разделитель передавалась некоторая соль. Но потом я задумался: не изобретаю ли велосипед?
Отсюда вопрос: как в серьезных проектах это решается? Приходит в голову - сделать аутентификацию по ключу, как в различных Rest API (OAuth, JWT). Но пока не соображу как. Скажите, в какую сторону копать?