在初始连接的授权标头中将JWT传递给Node.js WebSocket

我正在build立一个Node.js服务器来与我的Web应用程序的WebSockets进行通信。 我打算使用JSON Web令牌来限制只有已经通过webappauthentication的用户才能访问。 在研究的过程中,我无法findNode.js的WebSocket包,它支持客户端设置Authorization头并在初始连接调用中使用它。

我经常看到build议通过查询parameter passing令牌,这可能不如通过Authorization标头传递令牌安全。 我错过了什么吗? 是否有良好的,维护良好的WebSocket库允许设置Authorization头客户端,以便我可以防止不必要的连接到服务器?

基于浏览器的WebSocket API 不能指定HTTP标头 。 另一方面,查询参数的方法工作,并没有那么糟糕(当通过HTTPS使用),所以它经常被用来代替。

尽pipeNode.js有WebSocket实现,可以指定HTTP头,但这只能在Node.js中运行客户端时才起作用。 在浏览器中运行时不起作用。

Einaros的就是这样一个例子。 在Node.js中运行时,通过Authorization头传递JWT令牌很简单:

 var WebSocket = require("ws"); ' does not work in browsers var token = "Replace_this_with_your_JWT_token"; var options = { headers: { "Authorization" : "JWT " + token } }; var ws = new WebSocket("wss://example.com/path", options); ... 

但是,从Browserify使用时,要求ws只是返回无法传递自定义标头的普通的基于浏览器的WebSocket API。 除非Web浏览器添加对传递头文件的支持,否则通过查询parameter passing是一种方法。