用户:XYZ 在地址上没有权限="发送"



我可以通过web控制台以及bin/artemis producer命令使用LDAP服务器的凭据进行身份验证。当我对同一主题使用mosquitto_pub的相同凭据时,日志显示

User: $username does not have permission='SEND' on address $address" 

我也验证了日志中已解析的角色——mosquitto_pubartemis producer的角色相同。在我的案例中,他们解析了一个具有admin权限的producer角色。

根据协议的不同,授权有什么不同吗?似乎授权适用于CORE协议,也适用于AMQP(我已经通过artemis producer对两者进行了测试(。

不幸的是,我无法用artemis producer --protocol MQTT对此进行交叉检查——这会因为"不支持协议MQTT"而失败。

如文档中所述,传统admin权限未映射到send权限:

ActiveMQ 5.x只有3种权限类型——readwriteadmin。他们的网站上介绍了这些权限类型。然而,如前所述,ActiveMQ Artemis有9种权限类型——createAddressdeleteAddresscreateDurableQueuedeleteDurableQueuecreateNonDurableQueuedeleteNonDurableQueuesendconsumebrowsemanage。以下是如何将旧类型映射到新类型:

  • read-consumebrowse
  • write-send
  • admin-createAddressdeleteAddresscreateDurableQueuedeleteDurableQueuecreateNonDurableQueuedeleteNonDurableQueuemanage(如果mapAdminToManagetrue(

因此,您的producer角色需要write权限。

目前尚不清楚producer命令为什么适用于其他协议(即core&AMQP(,但根据您提供的内容,我相信这就是它不适用于MQTT的原因。

相关内容

  • 没有找到相关文章

最新更新