WAMP.ws:如何管理安全和隐私?

Neo*_*aru 4 privacy websocket node.js socket.io autobahn

我正在使用WAMP.ws规范在我的网站上设计公共/私人用户聊天室.

当我尝试保留所有连接用户的列表时,我的问题出现了.我能做什么:

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

- >但是我怎么能信任用户呢?任何用户都可以发送带有随机"user_id"参数的"Hello"消息.

对我来说,服务器必须在广播消息之前进行一些检查.但它是否符合WAMP.js规范?我已经读过,发布的消息总是由服务器广播.

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

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

谢谢

obe*_*tet 6

WAMP区分

  1. 认证
  2. 授权
  3. 验证

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

当使用Autobahn | Python来创建自己的WAMP路由器时,这里有多个示例说明如何实现不同的身份验证机制.

使用Crossbar.io(集成的,生产就绪的WAMP路由器)时,内置了身份验证机制(此处).


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

当使用Autobahn | Python来推出自己的WAMP路由器时,是一个展示如何实现自定义授权的示例.

Crossbar.io具有内置静态授权方案,并允许注册自定义WAMP过程以进行授权(此处).


最后,还有Validation,它检查事件或调用的应用程序级别有效负载.

以下是Autobahn | Python的示例.Crossbar.io将很快允许注册自定义WAMP程序进行验证.