我可以通过web控制台以及bin/artemis producer
命令使用LDAP服务器的凭据进行身份验证。当我对同一主题使用mosquitto_pub
的相同凭据时,日志显示
User: $username does not have permission='SEND' on address $address"
我也验证了日志中已解析的角色——mosquitto_pub
和artemis producer
的角色相同。在我的案例中,他们解析了一个具有admin
权限的producer
角色。
根据协议的不同,授权有什么不同吗?似乎授权适用于CORE协议,也适用于AMQP(我已经通过artemis producer
对两者进行了测试(。
不幸的是,我无法用artemis producer --protocol MQTT
对此进行交叉检查——这会因为"不支持协议MQTT"而失败。
如文档中所述,传统admin
权限未映射到send
权限:
ActiveMQ 5.x只有3种权限类型——
read
、write
和admin
。他们的网站上介绍了这些权限类型。然而,如前所述,ActiveMQ Artemis有9种权限类型——createAddress
、deleteAddress
、createDurableQueue
、deleteDurableQueue
、createNonDurableQueue
、deleteNonDurableQueue
、send
、consume
、browse
和manage
。以下是如何将旧类型映射到新类型:
read
-consume
、browse
write
-send
admin
-createAddress
、deleteAddress
、createDurableQueue
、deleteDurableQueue
、createNonDurableQueue
、deleteNonDurableQueue
、manage
(如果mapAdminToManage
是true
(
因此,您的producer
角色需要write
权限。
目前尚不清楚producer
命令为什么适用于其他协议(即core&AMQP(,但根据您提供的内容,我相信这就是它不适用于MQTT的原因。