Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用和保护rabbitmq mqtt websocket并在浏览器中使用_Node.js_Browser_Websocket_Rabbitmq_Mqtt - Fatal编程技术网

Node.js 使用和保护rabbitmq mqtt websocket并在浏览器中使用

Node.js 使用和保护rabbitmq mqtt websocket并在浏览器中使用,node.js,browser,websocket,rabbitmq,mqtt,Node.js,Browser,Websocket,Rabbitmq,Mqtt,我们需要一些异步工作者来完成一些1-2分钟的任务,然后从这些任务中提供用户反馈 其想法是使用rabbitmq mqtt websocket插件,并在计算直接在浏览器中完成时提供用户反馈 对于我们的“旧”堆栈,我们有一些api端点作为用户(浏览器)和rabbitmq服务之间的一个层,这些服务或多或少起到了fire and forget的作用 如前所述,我们现在需要向用户WebSocket(rabbitmq mqtt插件)提供我们认为应该创建的反馈 但我们想知道如何为每个用户保护公开的websock

我们需要一些异步工作者来完成一些1-2分钟的任务,然后从这些任务中提供用户反馈

其想法是使用rabbitmq mqtt websocket插件,并在计算直接在浏览器中完成时提供用户反馈

对于我们的“旧”堆栈,我们有一些api端点作为用户(浏览器)和rabbitmq服务之间的一个层,这些服务或多或少起到了fire and forget的作用

如前所述,我们现在需要向用户WebSocket(rabbitmq mqtt插件)提供我们认为应该创建的反馈

但我们想知道如何为每个用户保护公开的websocket端点?目前这不是一个问题,因为我们有一个X.509的amqps客户端

我们的新功能需要具有公共访问权限,因此我们无法事先对用户进行身份验证

有没有一种方法可以直接安全地使用暴露的端点,或者我们需要像现在这样在两者之间设置一个层?

支持TLS。然后,您可以使用用户名/密码对用户进行身份验证,或者使用客户端证书

如果需要公共访问,则无法保护端点。这适用于所有MQTT代理,而不仅仅是RabbitMQ



注意:RabbitMQ团队监控
RabbitMQ用户
,有时只回答有关StackOverflow的问题。

如果您使用可插入的身份验证源(抱歉,不熟悉RabbitMQ提供的内容),例如在数据库中存储用户/密码。然后,您可以为每个会话生成一组短期凭据,网页可以通过RESTAPI从服务器请求这些凭据,然后使用这些凭据通过WebSocket验证MQTT连接


这意味着凭据在浏览器中仅在短时间内作为临时变量公开,一旦web会话/操作完成,就可以很容易地撤销这些临时变量。

好吧,公共访问有点广泛,这是我的错。客户端的公共访问只能订阅其ID,而不能从其他用户处订阅。这可能吗?类似于动态用户创建(如果我们有10000个用户,这将是开销…),或者有没有办法在rabbitmq中直接限制这一点而不创建用户?您需要创建用户并使用rabbitmq的权限系统来限制对某些主题的访问。