使用令牌验证websocket客户端?

时间:2014-05-06 11:48:00

标签: authentication websocket token

我想为我的注册用户提供基于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条消息(这是可能的最高价值......但仍然可能),我认为这可能会造成一些麻烦......

1 个答案:

答案 0 :(得分:1)

Cookie有什么问题?

如果两台服务器位于同一个二级域(web.example.com和websocket.example.com),则可以共享cookie。

websocket连接将在协商期间发送该第二级域的现有cookie。

因此,您可以在Web服务器中执行身份验证,返回身份验证cookie,然后websocket将再次将该cookie发送到服务器。 websocket服务器应该能够打开和读取cookie。

"每分钟500条消息"每秒8条消息,应该不是问题。 Websocket连接建立一次,每条消息没有新的连接。 websocket与webservice不同。

干杯。