我想为我的注册用户提供基于websocket的服务。 网站前端正在服务器A上运行,WebSocket服务正在服务器B上运行。
我想确保服务器B不会授予对未经过服务器A身份验证的用户的访问权限。另外,我想避免会话被劫持。
我提出了这种方法,但我从未实现过websockets的安全性。 这可能是一个很好的方法吗?:
当客户端想要连接我的WebSocket时,服务器A请求a 来自服务器B的令牌。服务器B将生成此令牌并发送 它回到服务器A。
服务器B将令牌存储在缓存中。
现在允许客户端连接到WebSocket。客户 第一条消息包含令牌。
服务器B检查是否可以在缓存中找到令牌 令牌是否已被活动会话使用。
如果一切正常,客户将被注册并被允许 使用该服务。
这是一个好方法吗?有没有更好的解决方案我不必自己实施?
我读了这个解决方案: Best way to create a TOKEN system to authenticate web service calls?
但是,由于我的用户每分钟最多会发送500条消息(这是可能的最高价值......但仍然可能),我认为这可能会造成一些麻烦......
答案 0 :(得分:1)
Cookie有什么问题?
如果两台服务器位于同一个二级域(web.example.com和websocket.example.com),则可以共享cookie。
websocket连接将在协商期间发送该第二级域的现有cookie。
因此,您可以在Web服务器中执行身份验证,返回身份验证cookie,然后websocket将再次将该cookie发送到服务器。 websocket服务器应该能够打开和读取cookie。
"每分钟500条消息"每秒8条消息,应该不是问题。 Websocket连接建立一次,每条消息没有新的连接。 websocket与webservice不同。
干杯。