Html Websocket身份验证

Html Websocket身份验证,html,authentication,websocket,Html,Authentication,Websocket,我正在运行一个websocket服务器,并问自己,如果计划好的话,客户端身份验证将在将来通过握手来完成。。。草案xxxx可能:) 你有消息吗?我听说draft07可以将会话id发送到服务器,所以这可能有助于对客户端进行身份验证 我所做的是等待最长10秒,直到客户端发送给我一条带有登录头、用户名和密码的消息。但我认为这不是解决问题的办法。你们是怎么做到的?WebSockets协议允许在握手过程中交换标准HTTP身份验证头。如果您有一个WebSockets服务器作为模块插入到现有的web服务器中,那

我正在运行一个websocket服务器,并问自己,如果计划好的话,客户端身份验证将在将来通过握手来完成。。。草案xxxx可能:)

你有消息吗?我听说draft07可以将会话id发送到服务器,所以这可能有助于对客户端进行身份验证


我所做的是等待最长10秒,直到客户端发送给我一条带有登录头、用户名和密码的消息。但我认为这不是解决问题的办法。你们是怎么做到的?

WebSockets协议允许在握手过程中交换标准HTTP身份验证头。如果您有一个WebSockets服务器作为模块插入到现有的web服务器中,那么web服务器中的现有身份验证应该已经起作用了。否则,如果您有独立的WebSockets服务器,则可能需要添加身份验证支持

更新


正如@Jon指出的,与正常的HTTP/XHR请求不同,浏览器API不允许您为WebSocket连接设置任意的“X-*”头。您可以设置的唯一标头值是协议。这是不幸的。一种常见的解决方案是使用基于票证的系统,该系统依赖于现有的HTTP机制进行授权/身份验证,然后将此票证与websocket连接一起传递,并通过这种方式进行验证:

它可能是websocket规范的一部分,但在大多数浏览器中它不是websocket API的一部分。在浏览器中,不能将自定义标题与WebSocket握手一起发送。请参阅“与普通HTTP/XHR请求不同,您不能为WebSocket连接设置任意的“X-*”头。”-实际上@Jon指出,您不能通过WebSocket JS API进行设置。这和说WebSocket连接不能这样做是两码事。我已经澄清,这是一个专门的WebSocket浏览器API,而不是WebSocket协议限制。此外,还有一些Node.js/js WebSocket实现允许您设置标题。所以实际上,只有W3C浏览器API没有提供机制。