Websocket 接続が使用されている場合にユーザーを認証する方法は何ですか?
シナリオ例: 暗号化された WebSocket 接続を介した Web ベースのマルチユーザー チャット アプリケーション。このアプリケーションの各接続が特定の認証されたユーザーに属し、接続中に誤ったユーザーのなりすましによって「利用できない」ことを確認 (または保証) するにはどうすればよいですか。
アプリの Websocket 以外の部分の認証を既に行っている場合は、接続後に最初のメッセージとしてセッション Cookie を渡し、通常どおり Cookie を確認します。
警告: flashsockets が使用されている場合、次のことが機能しないことが指摘されています: socket.io を使用している
場合は、さらに簡単です。Cookieは接続時に自動的に渡され、次のようにアクセスできます。
var io = require('socket.io');
var socket = io.listen(app);
socket.on('connection', function(client){
cookies = client.headers['cookie'];
});
SSL/TLS は、X.509 証明書を使用してクライアントとサーバーの両方を認証するために使用できます。使用している Web アプリケーション プラットフォームによって異なります。Apache では、SSL_CLIENT_CERT環境変数の有効性を、既知の有効な証明書のリストと照らし合わせてチェックできます。これには、完全な PKI を使用する必要はなく、クライアントごとに証明書を購入する必要もありません。ただし、CA を使用してサーバーの SSL 証明書をサポートすることをお勧めします。