蚊子访问控制-模式和用户限制

时间:2019-03-31 08:01:07

标签: mqtt mosquitto

我正在尝试为普通用户和具有不同权限的“管理员”用户创建访问控制模式。

在使用该模式之前,我已经:

user admin
topic write +/in/#
topic read +/out/#

user john
topic read john/in/#
topic write john/out/#

那很好。但是,在引入更多用户时,需要一种模式。我从Mosquitto的数据表中得出的结论是:

user admin
topic write +/in/#
topic read +/out/#

pattern read %u/in/#
pattern write %u/out/#

但是,使用上述配置,连接被拒绝。我对上述配置有什么错?

我还将添加单独的模式(没有“ admin”用户配置),它可以正常工作。我面临的问题是同时拥有模式和特定的用户访问控制。

编辑:添加mosquitto(v1.4.15)的配置可能会很好:

allow_anonymous false
password_file /etc/mosquitto/passwd
acl_file /etc/mosquitto/conf.d/access_control

message_size_limit 1000
use_username_as_clientid true

log_dest file /var/log/mosquitto/mosquitto.log
log_dest topic
connection_messages true
log_type all

1 个答案:

答案 0 :(得分:0)

您需要将用户特定的模式放在常规模式之后。

例如

pattern read %u/in/#
pattern write %u/out/#

user admin
topic write +/in/#
topic read +/out/#

这是因为假设user项之后的所有模式都属于该用户。

编辑:

实际上doc暗示了其他含义,但我还是尝试一下。

  

替换模式必须是该级别的唯一文本   层次结构。模式ACL适用于所有用户,即使“ user”关键字   以前已经给出过。