团队,
我正在使用以下配置(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 对队列 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 在测试队列上读写。即使用户-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 不应在测试队列上获得授权。
如果我丢失了,我尝试了不同的方法并进行了很多故障排除。我相信我缺少一些东西