我正在尝试为普通用户和具有不同权限的“管理员”用户创建访问控制模式。
在使用该模式之前,我已经:
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
答案 0 :(得分:0)
您需要将用户特定的模式放在常规模式之后。
例如
pattern read %u/in/#
pattern write %u/out/#
user admin
topic write +/in/#
topic read +/out/#
这是因为假设user
项之后的所有模式都属于该用户。
编辑:
实际上doc暗示了其他含义,但我还是尝试一下。
替换模式必须是该级别的唯一文本 层次结构。模式ACL适用于所有用户,即使“ user”关键字 以前已经给出过。