我正在尝试为常规用户访问控制创建模式,以及具有不同权限的“admin”用户。
在模式之前,我已经:
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
您需要在一般模式之后放置用户特定的模式。
EG
pattern read %u/in/#
pattern write %u/out/#
user admin
topic write +/in/#
topic read +/out/#
这是因为假定user
条目后面的所有模式都属于该用户。
编辑:
实际上doc暗示不然,但我还是试试看。
替换模式必须是该级别的层次结构的唯一文本。即使之前已经提供了“user”关键字,模式ACL也适用于所有用户。