在Artemis中为MQTT设置安全设置

时间:2019-11-20 08:21:35

标签: mqtt activemq-artemis

我正在尝试控制Artemis用户可以在MQTT中使用哪些主题。我让Artemis工作,并且可以使用:match="#"发送/收听MQTT主题,但是如果我尝试将某些主题的匹配项限制为:match="userA.#"(类似于文档中的大多数示例),则无法发送并且没有收到任何消息。

我进入管理控制台,发现我保留的主题userA/test的地址为$sys.mqtt.retain.userA.test,所以我尝试为匹配项加上前缀,但这也不起作用。

因此,我的问题是:您可以使用security-settings限制MQTT主题访问吗?如果可以,您该怎么做?

是否有更好的方法,例如使用/编写SimpleMQTTInterceptor?

1 个答案:

答案 0 :(得分:0)

我相信这里的问题是match与主题名称的语法。您的比赛是userA.#,但您的主题是userA/test。请注意,.不等于/。尝试将配置更改为:

<wildcard-addresses>
   <delimiter>/</delimiter>
</wildcard-addresses>

然后将您的匹配项更改为userA/#

通配符语法配置在the documentation中进行了讨论。