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

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

29 голосов
/ 23 апреля 2010

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

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

Ответы [ 2 ]

42 голосов
/ 19 октября 2010

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

ВНИМАНИЕ: было отмечено, что при использовании вспышек не работает:
Если вы используете socket.io , это даже проще - файлы cookie передаются автоматически при подключении и могут быть доступны следующим образом:

var io = require('socket.io');
var socket = io.listen(app); 
socket.on('connection', function(client){ 
    cookies = client.headers['cookie'];
});
3 голосов
/ 23 апреля 2010

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

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