Подтвердить что ты не робот

Аутентификация WebSockets

Каковы возможные способы аутентификации пользователя при использовании соединения с websocket?

Пример сценария: веб-многопользовательский чат-приложение через зашифрованное соединение в сети. Как я могу гарантировать (или гарантировать), что каждое соединение в этом приложении принадлежит определенному аутентифицированному пользователю и "не может быть" эксплуатировано ложным олицетворением пользователя во время соединения.

4b9b3361

Ответ 1

SSL/TLS может использоваться для аутентификации как клиента, так и сервера с использованием сертификатов X.509. Это зависит от используемой вами платформы веб-приложений. В apache переменная среды SSL_CLIENT_CERT может быть проверена на предмет достоверности, чтобы список известных сертификатов был действительным. Это не потребует использования полной PKI и не требует, чтобы вы покупали сертификаты для каждого клиента. Хотя я рекомендую использовать CA для подтверждения вашего сертификата ssl сервера.

Ответ 2

Если вы уже выполняете аутентификацию для части, не связанной с веб-сайтом, просто передайте cookie сеанса вместе с первым сообщением после подключения и проверьте файл cookie, как обычно.

ПРЕДУПРЕЖДЕНИЕ: Было указано, что при использовании флеш-памяти не работает следующее:
Если вы используете socket.io, это еще проще: файлы cookie автоматически передаются при подключении и могут быть доступны как:

var io = require('socket.io');
var socket = io.listen(app); 
socket.on('connection', function(client){ 
    cookies = client.headers['cookie'];
});