2
我想在我的nodejs websocket应用中实现http basic认证。这里是我的一段代码:nodejs websocket和http基本认证
var http = require('http');
var auth = require('http-auth');
var express = require('express');
var app = express();
//....
basic = auth.basic({
realm: "websocket auth",
file: __dirname + "/users.htpasswd"
});
var server = http.createServer(basic);
app.listen = function() {
return server.listen.apply(server, arguments);
};
// WEBSOCKET
var WebSocketServer = require('websocket').server;
var wss = new WebSocketServer({
httpServer: server
});
wss.on('request', function(request) {
var connection = request.accept();
connection.sendUTF('Server: message ws auth');
});
对于标准的HTTP访问验证它工作正常,但我不能让它工作的WebSocket,当我通过WebSocket的连接我立即得到响应。甚至有可能通过websocket上的http进行身份验证?
感谢,但根据RFC https://tools.ietf.org/html/rfc6455#page-53它看起来像我应该能够在http服务器升级到websocket协议之前做http身份验证。 – 2014-09-12 11:38:33
你确定你正在通过HTTP协商升级吗? – tkone 2014-09-12 13:48:38
是的,我确定,因此httpServer也传递给WebSocketServer对象。 – 2014-09-16 11:04:55