我正试图与两名听众成为一名蚊子经纪人。 一个不安全,一个TLS安全。 基本上,对于订阅(阅读)主题,你不必提供任何凭据和东西。 但它不起作用。 匿名用户仍然可以发布到主题。
我咨询了手册页 ,恕我直言,一切正确,但只要我有一行allow_anonymous true
即使在第一行中的topic read #
它允许匿名写。 我使用未包含在ACL中的用户来validationallow_anonymous false
。 在这种情况下,我仍然能够发布到像foo/generic/something
主题,只是发生了变化,需要一个有效的用户,但ACL仍然不能像我所期望的那样工作。
所以基本上甚至是手册页都说明了
假设allow_anonymous为true,则将第一组主题应用于匿名客户端。
这是行不通的。 我究竟做错了什么? 我正在使用蚊子1.4.7。 我附加了我的configuration下面(path有点疯狂,因为我在共享的机器上)
mosquitto.conf
retry_interval 30 sys_interval 15 store_clean_interval 15 pid_file /home/johndoe/mosquitto/pidfile.pid port 61883 # tls listener listener 61884 cafile /home/johndoe/mosquitto/tls/ca.crt certfile /home/johndoe/mosquitto/tls/server.crt keyfile /home/johndoe/mosquitto/tls/server.key require_certificate false tls_version tlsv1.2 # acls acl_file /home/johndoe/etc/mosquitto/mosquitto.acl password_file /home/johndoe/etc/mosquitto/mosquitto.passwd allow_anonymous true
mosquitto.acl
topic read # user john topic readwrite foo/
您使用选项卡来分隔ACL文件中的字段。 ACL文件需要使用(任意数量)的空格。
虽然手册页没有明确说明这个文件是由strtok_r用“”分隔符分析的。 意思是只有空格是可接受的分隔符。
因此,要使访问控制工作简单,请用空格replace选项卡。