我们需要一些1-2分钟的任务,然后提供用户从这个任务的反馈,一些crock工人。
我们的想法是使用rabbitmq mqtt WebSocket插件,并在计算直接在浏览器中完成时提供用户反馈。
对于我们的“旧”堆栈,我们有一些API端点作为用户(浏览器)和rabbitmq服务之间的层,或多或少充当了“火和遗忘”。
如前所述,我们现在需要提供反馈,我们认为它将被创建到用户websockets(rabbitmq mqtt插件)。
但是我们想知道如何为每个用户保护公开的WebSocket端点?目前这不是一个问题,因为我们有一个amqps客户端与X.509。
我们的新功能需要有公共访问,所以我们不能事先授权用户。
有没有一种方法可以直接安全地使用暴露的端点,或者我们需要像现在这样在中间放置一层?
2条答案
按热度按时间xxe27gdn1#
RabbitMQ Web MQTT plugin支持TLS。然后,您可以使用用户名/密码对用户进行身份验证,或使用客户端证书。
如果你需要公共访问,那么就没有办法保护端点。这适用于所有MQTT代理,而不仅仅是RabbitMQ。
rwqw0loc2#
如果您使用可插入的身份验证源(对不起,不熟悉RabbitMQ提供的功能),例如:在数据库中存储用户/密码。然后,您可以为每个会话生成一组短期凭据,网页可以通过REST API从服务器请求这些凭据,然后使用这些凭据通过WebSockets对MQTT连接进行身份验证。
这意味着凭证仅在浏览器中作为临时变量短时间暴露为变量,一旦Web会话/操作完成,即可轻松撤销