队
我正在使用以下配置(http://activemq.apache.org/runtime-configuration.html)
在activemq.xml中实现授权映射设置的运行时重新加载<broker xmlns="http://activemq.apache.org/schema/core" start="false" ... >
<plugins>
<runtimeConfigurationPlugin checkPeriod="1000" />
</plugins>
...
</broker>
我执行了测试用例,其中一个特定情况(严重)未按预期工作。 测试用例失败的原因是用户A对Queue-A具有读写访问权限。用户A成功读写。但是,如果删除了User-A的角色,而没有重新启动ActiveMQ,则User-A仍然可以读取和写入Queue-A。预期的结果是ActiveMQ将禁止用户读写Queue-A。
详细步骤如下。
操作1 :使用用户A启动代理后没有任何测试队列的映射条目
<plugins>
<authorizationPlugin>
<map>
<authorizationMap>
<authorizationEntries>
<authorizationEntry topic="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins"/>
<authorizationEntry queue="test.queue.A>" read="admins" write="admins" admin="admins"/>
</authorizationEntries>
</authorizationMap>
</map>
</authorizationPlugin>
</plugins>
结果1 :用户A登录成功但无权访问测试队列
操作2:然后我修改了授权映射并允许用户A在测试队列上进行读写。即成为“grp_subscribers”的用户成员
<plugins>
<authorizationPlugin>
<map>
<authorizationMap>
<authorizationEntries>
<authorizationEntry topic="ActiveMQ.Advisory.>" read="grp_subscribers, admins" write="grp_subscribers, admins" admin="grp_subscribers, admins"/>
<authorizationEntry queue="test.queue.A>" read="grp_subscribers" write="grp_subscribers" admin="grp_subscribers, admins"/>
</authorizationEntries>
</authorizationMap>
</map>
</authorizationPlugin>
</plugins>
结果2 :用户A登录成功并在测试队列上授权
行动3 :然后我再次通过删除用户A对测试队列的访问来修改授权映射
<plugins>
<authorizationPlugin>
<map>
<authorizationMap>
<authorizationEntries>
<authorizationEntry topic="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins"/>
<authorizationEntry queue="test.queue.A>" read="admins" write="admins" admin="admins"/>
</authorizationEntries>
</authorizationMap>
</map>
</authorizationPlugin>
</plugins>
结果3 :用户A登录成功并仍然在测试队列上获得授权,这就是问题所在。用户A不应在测试队列上获得授权。
我尝试了不同的方法,如果我失踪了,我会做很多故障排除。我相信有一些我不想要的东西
答案 0 :(得分:0)
使用checkPeriod属性更新Activemq AuthorizationMap。在更改授权角色后,需要刷新消费者/订户/生产者连接,可以通过jmx停止或启动传输连接器来刷新。