node.js - WAMP.ws : How to manage security and privacy?

标签 node.js websocket socket.io privacy autobahn

我正在使用 WAMP.ws 规范在我的网站上设计公共(public)/私有(private)用户聊天室。

当我尝试保留所有已连接用户的列表时,我的问题就来了。 我能做什么:

  1. 所有用户都订阅“/contacts/connections”主题。
  2. 当用户连接时,他会发布带有“user_id”参数的“hello”消息,告诉其他用户他已连接。

--> 但我如何才能信任用户呢?任何用户都可以发送带有随机“user_id”参数的“Hello”消息。

对我来说,服务器在广播消息之前必须做一些检查。但它符合 WAMP.js 规范吗?我读到发布的消息总是由服务器广播。

另一种解决方案可能是使用 RPC 调用来连接用户。实际上,我这样做是为了验证用户。但是服务器可以自己广播一个事件到主题“/contacts/connections”吗? (在 RPC 调用之后,而不是在“发布”消息之后) 我读过事件只是客户端“发布”的直接结果。 此外,这不会阻止普通用户通过“/contacts/connections”主题发送事件,该主题将由服务器广播。

我觉得我的两个解决方案(在广播前检查已发布的消息,或在 RPC 调用后由服务器广播事件)都违反了 WAMP.js 规范。 我错了吗?

谢谢

最佳答案

WAMP 区分

  1. 身份验证
  2. 授权
  3. 验证

身份验证在 WAMP 路由器上建立 WAMP 客户端的身份。

使用 Autobahn|Python 时滚动您自己的 WAMP 路由器,here多个示例展示了如何实现不同的身份验证机制。

使用 Crossbar.io 时(一个集成的、生产就绪的 WAMP 路由器),内置身份验证机制(here)。


授权确定是否允许给定的 WAMP 客户端对给定的 URI 执行 WAMP 操作(如发布或调用)。

使用 Autobahn|Python 时滚动您自己的 WAMP 路由器,here是展示如何实现自定义授权的示例。

Crossbar.io 有一个内置的静态授权方案,并允许注册自定义 WAMP 程序以进行授权 (here)。


最后是Validation,它检查事件或调用的应用程序级负载。

Here是高速公路|Python 的示例。 Crossbar.io 很快将允许注册自定义 WAMP 程序以进行验证。


关于node.js - WAMP.ws : How to manage security and privacy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19845664/

相关文章:

node.js - 在 Google Cloud Function 中设置环境变量

node.js - 将express node.js项目部署到azure 500服务器错误

javascript - Websocket 通过 Javascript 客户端发送图像文件

node.js - 套接字io。禁用自动加入由套接字 ID 标识的房间

javascript - 如何在socket.io中始终加入同一个房间?

javascript - 如何将oEmbed对象中的html直接写入jade模板中?

node.js - 如何获取 Firebase 动态链接分析 Rest API (NodeJS) 的正确访问 token

javascript - 正确调试 Javascript 问题? (最有可能是客户端)

node.js - Socket.IO、SSL、nginx、目录路径

express - 使用 Redis 和 JWT 的 Socket.io 用户 session