Access-Control-List
只允許匿名在 mosquitto 中閱讀
我正在嘗試實現一個有兩個聽眾的蚊子經紀人。一種不安全,一種受 TLS 保護。基本上,對於訂閱(閱讀)主題,您不必提供任何憑據和東西。但它不起作用。匿名使用者仍然可以發佈到主題。
我查閱了手冊頁,恕我直言,一切都做對了,但只要我有這條線
allow_anonymous true
,即使 acl 中的第一行topic read #
也允許匿名寫入。allow_anonymous false
我使用未包含在 ACL 中的使用者進行了仔細檢查以進行驗證。在這種情況下,我仍然可以發佈到主題,比如foo/generic/something
唯一改變的是,需要一個有效的使用者,但 ACL 仍然不能像我預期的那樣工作。所以基本上即使是手冊頁狀態
第一組主題應用於匿名客戶端,假設 allow_anonymous 為真。
這沒用。我究竟做錯了什麼?我正在使用蚊子 1.4.7。我在下面附加了我的配置(路徑有點瘋狂,因為我在共享機器上)
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
蚊子.acl
topic read # user john topic readwrite foo/
您使用製表符分隔 ACL 文件中的欄位。ACL 文件需要使用(任意數量的)空格。
雖然手冊頁沒有明確說明這一點,但文件由 strtok_r 解析,分隔符為“”。這意味著只有空格是可接受的分隔符。
因此,要使您的訪問控制正常工作,只需將製表符替換為空格即可。