用户:Bob 在地址 test/signal/abc 上没有队列 bob.test/test/signal/abc 的权限='CREATE_DURABLE_QUEUE'
User: Bob does not have permission='CREATE_DURABLE_QUEUE' for queue bob.test/test/signal/abc on address test/signal/abc
我已经配置了 ActiveMQ Artemis broker.xml
文件,这样一个用户 (Alice) 将使用 MQTT 协议在 Artemis 中创建 address/queue。 Alice 的角色配置为可以创建 addresses/queues/send/consume
而另一个用户 (Bob) 只会 consume/send 该队列中的消息。 Bob 的角色配置为只能发送和使用主题。
但是,我在执行以下操作时遇到异常:
- 使用 Alice 发布到主题
- 正在使用 Bob 订阅同一主题
在执行以下操作时也会遇到相同的异常:
- 正在使用 Alice 订阅主题
- 正在使用 Bob 订阅同一主题
Error processing Control Packet, Disconnecting Client: ActiveMQSecurityException[errorType=SECURITY_EXCEPTION message=AMQ229213: User: bob123 does not have permission='CREATE_DURABLE_QUEUE' for queue bob.test/test/signal/abc on address test/signal/abc]
broker.xml:
<security-settings>
<security-setting match="test/signal/#">
<permission roles="amq,alice-user" type="createDurableQueue"/>
<permission roles="amq,alice-user" type="deleteDurableQueue"/>
<permission roles="amq,alice-user" type="createAddress"/>
<permission roles="amq,alice-user" type="deleteAddress"/>
<permission roles="amq,alice-user,bob-user" type="send"/>
<permission roles="amq,alice-user,bob-user" type="consume"/>
<permission roles="amq,alice-user,bob-user" type="browse"/>
<permission type="manage" roles="amq,alice-user,bob-user"/>
</security-setting>
</security-settings>
<address-settings>
<address-setting match="test/signal/#">
<default-exclusive-queue>true</default-exclusive-queue>
<max-size-bytes>-1</max-size-bytes>
<page-size-bytes>10485760</page-size-bytes>
<address-full-policy>BLOCK</address-full-policy>
<slow-consumer-threshold>1</slow-consumer-threshold>
<slow-consumer-policy>KILL</slow-consumer-policy>
<slow-consumer-check-period>5</slow-consumer-check-period>
<default-purge-on-no-consumers>true</default-purge-on-no-consumers>
<default-max-consumers>1</default-max-consumers>
<auto-create-addresses>true</auto-create-addresses>
<auto-delete-addresses>true</auto-delete-addresses>
<default-address-routing-type>ANYCAST</default-address-routing-type>
<auto-create-queues>true</auto-create-queues>
<auto-delete-queues>true</auto-delete-queues>
</address-setting>
</address-settings>
为了在目标上创建订阅,用户必须具有创建队列的权限。队列 是 代理上的订阅。您尚未授予 bob123
此权限,因此经纪人不会允许。
此外,由于您对目的地使用 MQTT 语法(使用 /
字符),因此您需要配置代理以将其用作定界符,以便您的匹配实际适用于您的security-setting
和 address-setting
,例如:
<wildcard-addresses>
<delimiter>/</delimiter>
</wildcard-addresses>
我已经配置了 ActiveMQ Artemis broker.xml
文件,这样一个用户 (Alice) 将使用 MQTT 协议在 Artemis 中创建 address/queue。 Alice 的角色配置为可以创建 addresses/queues/send/consume
而另一个用户 (Bob) 只会 consume/send 该队列中的消息。 Bob 的角色配置为只能发送和使用主题。
但是,我在执行以下操作时遇到异常:
- 使用 Alice 发布到主题
- 正在使用 Bob 订阅同一主题
在执行以下操作时也会遇到相同的异常:
- 正在使用 Alice 订阅主题
- 正在使用 Bob 订阅同一主题
Error processing Control Packet, Disconnecting Client: ActiveMQSecurityException[errorType=SECURITY_EXCEPTION message=AMQ229213: User: bob123 does not have permission='CREATE_DURABLE_QUEUE' for queue bob.test/test/signal/abc on address test/signal/abc]
broker.xml:
<security-settings>
<security-setting match="test/signal/#">
<permission roles="amq,alice-user" type="createDurableQueue"/>
<permission roles="amq,alice-user" type="deleteDurableQueue"/>
<permission roles="amq,alice-user" type="createAddress"/>
<permission roles="amq,alice-user" type="deleteAddress"/>
<permission roles="amq,alice-user,bob-user" type="send"/>
<permission roles="amq,alice-user,bob-user" type="consume"/>
<permission roles="amq,alice-user,bob-user" type="browse"/>
<permission type="manage" roles="amq,alice-user,bob-user"/>
</security-setting>
</security-settings>
<address-settings>
<address-setting match="test/signal/#">
<default-exclusive-queue>true</default-exclusive-queue>
<max-size-bytes>-1</max-size-bytes>
<page-size-bytes>10485760</page-size-bytes>
<address-full-policy>BLOCK</address-full-policy>
<slow-consumer-threshold>1</slow-consumer-threshold>
<slow-consumer-policy>KILL</slow-consumer-policy>
<slow-consumer-check-period>5</slow-consumer-check-period>
<default-purge-on-no-consumers>true</default-purge-on-no-consumers>
<default-max-consumers>1</default-max-consumers>
<auto-create-addresses>true</auto-create-addresses>
<auto-delete-addresses>true</auto-delete-addresses>
<default-address-routing-type>ANYCAST</default-address-routing-type>
<auto-create-queues>true</auto-create-queues>
<auto-delete-queues>true</auto-delete-queues>
</address-setting>
</address-settings>
为了在目标上创建订阅,用户必须具有创建队列的权限。队列 是 代理上的订阅。您尚未授予 bob123
此权限,因此经纪人不会允许。
此外,由于您对目的地使用 MQTT 语法(使用 /
字符),因此您需要配置代理以将其用作定界符,以便您的匹配实际适用于您的security-setting
和 address-setting
,例如:
<wildcard-addresses>
<delimiter>/</delimiter>
</wildcard-addresses>