【发布时间】:2013-01-14 01:26:55
【问题描述】:
我正在使用基于 Node.js 的 https 服务器,该服务器使用 HTTP Basic 进行身份验证(这很好,因为数据是通过 SSL 加密连接发送的)。
现在我想提供一个 Socket.io 连接,应该是
- 加密和
- 仅适用于经过身份验证的用户。
问题是如何做到这一点。我已经发现在连接到套接字时我需要在客户端 JavaScript 代码中指定{ secure: true },但是如何在服务器端强制套接字连接只能通过 SSL 运行,并且它仅适用于经过身份验证的用户?
我猜 SSL 是最简单的部分,因为 Socket.io 服务器只绑定到 https 服务器,所以它应该只使用 SSL 运行,并且应该不可能通过(另外)运行它运行http服务器,对吧?
关于另一件事,我一点也不知道如何确保只有在用户使用 HTTP Basic 成功进行身份验证后才能建立套接字连接。
有什么想法吗?
【问题讨论】:
-
您不能只使用 wss 协议而不是标准 ws 协议来加密有线通信吗?另外,验证用户是什么意思?您的意思是根据数据库中的凭据对发送的用户凭据进行身份验证吗?
-
我没有找到有关如何在 socket.io 中保护套接字的相关文档(除了在服务器本身上实现 SSL)。 1) 我可以问一个例子,当我想让通道对客户安全时,在哪里放置标志
{secure: true}? 2)另外,这个标志是否意味着从客户端到服务器的消息将被加密?或者这个标志本质上是做什么的? 3)最后,如果套接字/通道不安全,有没有办法阻止节点应用程序或与客户端的连接?非常感谢。
标签: node.js authentication ssl websocket socket.io