websockets的基本身份验证

时间:2011-07-16 02:53:16

标签: google-chrome node.js

当我使用chrome

创建一个新的websocket时
new WebSocket('ws://gert:passwd@127.0.0.1:8001/dbname')

nodejs服务器接收

GET /dbname HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: 127.0.0.1:8001
Origin: http://127.0.0.1:8000
Sec-WebSocket-Key1: '  5 5) 4 1e   a9 9 0 19
Sec-WebSocket-Key2: 3000909100 Q

如何检索gert和passwd?

5 个答案:

答案 0 :(得分:6)

似乎chrome确实没有在ws头文件中传递基本的auth数据。 为什么不将login / pwd作为url查询字符串的一部分? (并使用安全wss)

答案 1 :(得分:6)

Chrome未在升级请求中传递授权标头。这导致身份验证失败。

这个问题似乎已在最新的铬Here

中得到修复

答案 2 :(得分:5)

The Authorization header was not mentioned in the WebSocket spec until Hybi-13。 Chrome实现了hybi-00和hybi-10(取决于Chrome的版本),因此不需要实施。

现在已经在协议中提到了,也许谷歌会实现它,但我不保证在URI中放置“user:pass @ ...”必然是这样做的方式,它可能需要更改到浏览器的WebSocket API。

答案 3 :(得分:3)

SSL

我发现了link on Quora

我同意您可以使用SSL并将这些凭据作为第一条消息发送。

Socket.io

你也可以使用socket.io,它也有websockets传输来做authorizing

答案 4 :(得分:1)

Chrome会发送带有websocket连接的Cookie。如果您有会话cookie,则可以使用会话cookie来标识启动websocket连接的用户。