【问题标题】:RabbitMQ - security/authenticationRabbitMQ - 安全/身份验证
【发布时间】:2012-05-22 07:15:39
【问题描述】:

我正在开发一个应用程序,我只是想知道 RabbitMQ 是否可以允许所有客户端将消息推送到特定队列,并且只有经过身份验证的用户才能使用该队列中的消息?我似乎找不到任何关于此的内容:/

基本上我的模型是这样的: 客户端都连接到同一个队列并在其上推送他们的消息。此外,每个客户端都应该在接收消息的地方注册自己的队列(每个客户端都有唯一的队列)。

所以基本上客户端会将消息发送到一个队列,并且只有我的服务器应用程序应该能够从中读取、处理数据并将回复发送到特定的用户队列(只能由该用户读取并且只有服务器应该发布在上面)。

我想这是可能的吧?有人可以引导我走向正确的方向,在哪里可以找到有关这些东西/示例/教程的更多信息

【问题讨论】:

    标签: java rabbitmq amqp


    【解决方案1】:

    因此,开箱即用的 AFAIK 是不可能的,但您有 2 个选项:

    1. 如果您熟悉 erlang,您可以为 rabbitmq 编写自己的插件(这不需要额外的 erlang 知识 - 只是基础知识)
    2. 您可以创建 2 个虚拟主机并在每个主机上进行交换(vhost A 用于读取 vhost B 用于写入)。在虚拟主机 B 中创建交换,并使用路由键将其绑定到特定队列。在虚拟主机 A 中创建联合交换[1]。简介:联邦交换允许映射交换到上游交换,这意味着映射交换将接收来自上游交换的所有消息。因此,在虚拟主机 A 中创建交换 E1,并将其映射到虚拟主机 B 中的交换 E2。对于每个虚拟主机,您可以创建不同的用户。

    [1]: http://www.rabbitmq.com/federation.html - 这是关于联合插件的手册,其中包含现成的示例。

    【讨论】:

    • 那么有没有更简单的方法来防止未经授权的访问?我希望你能在这里看到我的担忧,因为我想确保我的少数工作节点从队列中获取消息并处理它们会得到消息,如果其他人想出连接到同一个队列的方法,我会失去一些他们会收到的消息。并且队列应该能够接收来自每个人的消息,因为客户端应用程序将托管在用户设备上。
    • 对不起,有更简单的方法:) 如果你使用管理插件(rabbitmq.com/management.html),你可以去虚拟主机选项卡,添加用户,有“写正则表达式”和“读正则表达式”字段“你可以在这里传递你的队列名称。或者您可以使用 rabbitmqctl 中的“set_permissions”命令。
    • 谢谢 :) 看来这正是我所需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 2012-11-22
    • 2014-04-30
    • 2016-05-21
    • 2015-09-15
    • 2011-05-04
    相关资源
    最近更新 更多