【问题标题】:ActiveMQ topics and security (or Apollo)ActiveMQ 主题和安全性(或 Apollo)
【发布时间】:2013-07-23 05:00:54
【问题描述】:

我是 Active MQ 的新手。我想知道在 Active MQ(或 Apollo)中是否可以进行以下操作。

基本上,我有一个进程会生成消息以启用或禁用特定站点。当消息(启用/禁用)发送到 ActiveMQ 时,该消息可能有多个消费者,具体取决于消息的路由键。例如,如果消息是启用站点 A,则路由键将是 site.A.enable。监控站点 A 队列的站点 A 将收到此消息,以及监控所有启用/禁用消息的系统范围处理器。

现在,我认为这在 Active MQ 中使用主题是可行的。 SiteA 将订阅site.A.* 的所有主题,系统进程将订阅site.*.enablesite.*.disable 的所有主题。 这是在 ActiveMQ 中做到这一点的最佳方式吗?

我还想确保 siteA 不能订阅 site.B.*site.C.* 主题。他们只能接收来自site.A.* 的消息。并且系统进程可以访问所有site.*.*主题。我也认为这可以通过安全插件来完成。我只需更新配置文件并为每个站点主题指定读/写/管理访问权限,并将其连接到用户/通行证或 ldap 以识别正在连接的站点。 正确吗?如果网站是外部的,这会起作用吗?

我希望能够以最少的配置/设置添加新站点。当 siteX 上线时,发布者代码将像所有其他的一样发布消息,除了主题site.X.* 将在发布第一条消息时动态创建。消费者也可以从site.X动态开始消费。

这就是我的问题所在。 如何添加站点 X 只能“动态”访问 site.X 主题的安全性?我想我必须编辑配置文件并为新站点添加安全性内容。然后我将不得不停止/启动服务器以获取新设置。我也许可以编辑服务器上的配置,但我认为我们不能在每次添加新站点时都停止/启动。

有没有更好的方法来做到这一点?

谢谢!

【问题讨论】:

    标签: activemq apollo


    【解决方案1】:

    您所概述的内容非常明智。您需要为每个站点创建一个新的 ActiveMQ 用户,并使用授权插件授予他们对site.<whatever> 的读写和管理权限。如果您使用简单的安全插件,其中身份验证和授权详细信息都在您的 activemq.xml 中,那么您需要在每次添加站点后重新启动 ActiveMQ。

    如果您想自动执行此操作(不能真正动态执行此操作),那么您将需要使用身份验证和授权插件的 LDAP 版本,并且有一个脚本可以将适当的凭据和权限写入 LDAP安装了一个站点。我猜你可能已经需要某种脚本步骤来首先将凭据添加到站点,所以这应该没什么大不了的。我很确定 ActiveMQ 应该在不重新启动的情况下获取更改,但我自己没有尝试过,所以您需要对此进行测试。

    【讨论】:

    • 谢谢。 LDAP 工作。我花了几天时间才让它们一起工作(你需要 jaasAuthenticationPlugin 和 cachedLDAPAuthorizationMap,这在规范中不是很清楚)。
    • 太棒了,感谢您的反馈!不知道缓存的LDAPAuthorizationMap。
    • @Dan,我知道已经有一段时间了,但您介意发布您的 apollo.xml 和 login.config 吗?我正在尝试做与您非常相似的事情,但设置有问题。谢谢
    猜你喜欢
    • 2020-01-08
    • 2015-02-11
    • 2015-04-28
    • 2012-07-05
    • 2017-02-13
    • 2016-04-01
    • 2015-12-13
    • 2010-10-01
    • 1970-01-01
    相关资源
    最近更新 更多