簡體   English   中英

用於訂閱的 Mosquitto-auth-plugin ACL

[英]Mosquitto-auth-plugin ACL for subscription

我目前正在使用 mosquitto broker 來查看我是否可以用它構建一些有趣的東西,我遇到了這個名為 mosquitto-auth-plugin 的身份驗證插件。

我遵循了插件的文檔,我使用 postgres 作為后端表。 它似乎在用戶身份驗證方面起作用。 當談到 ACL 時,我發現發布 ACL 就在現場,但訂閱 ACL 是我無法理解的東西。

 |-- GETTING USERS: karthik 1546887525: |-- getuser(karthik) AUTHENTICATED=1 by postgres 1546887525: New client connected from 127.0.0.1 as karthik (c1, k60, u'karthik'). 1546887525: No will message specified. 1546887525: Sending CONNACK to karthik (0, 0) 1546887525: Received SUBSCRIBE from karthik 1546887525: test/test (QoS 0) 1546887525: |-- mosquitto_auth_acl_check(..., client id not available, karthik, test/test, MOSQ_ACL_WRITE) 1546887525: |-- SUPERUSER: karthik 1546887525: |-- user is 0 1546887525: |-- USERNAME: karthik, TOPIC: test/test, acc: 4 1546887525: |-- aclcheck(karthik, test/test, 4) AUTHORIZED=0 by none 1546887525: Sending SUBACK to karthik

如您所見,我的疑問是“acc:4”中“4”是什么意思? 我在插件的文檔中沒有找到。 如果我在數據庫中創建另一個用戶名條目並將讀/寫訪問權限設置為 4(除了最初設置的讀/寫訪問權限),我發現訂閱 ACL 工作正常並檢查身份驗證。

我想知道是否應該更改 mosquitto 配置以解決此問題? 我想我錯過了一個簡單但關鍵的細節......感謝任何幫助! 另外,我附上了配置文件

 auth_plugin /home/auth-plug.so auth_opt_backends postgres auth_opt_host localhost auth_opt_port 5432 auth_opt_dbname test_db auth_opt_user postgres auth_opt_pass lolol auth_opt_userquery SELECT password FROM clients WHERE username = $1 limit 1 auth_opt_superquery SELECT COALESCE(COUNT(*),0) FROM clients WHERE username = $1 AND super = 1 auth_opt_aclquery SELECT topic FROM mqttacl WHERE (username = $1) AND (rw & $2) > 0

解決了這個問題。 在新的 mosquitto 1.5 版本中, MOSQ_ACL_SUBSCRIBE是一個額外的增強功能,並且在 ACL 檢查中引入了一個額外的位。 該值現在從 0 到 7 (由於 3 位)而不是 0-3(由於 2 位)。

所以現在數據庫中 ACL 表的讀/寫值必須在 0 到 7 之間變化。

  1. 0:無訪問權限
  2. 1:閱讀
  3. 2:寫
  4. 3:讀寫
  5. 4:訂閱
  6. 5:閱讀和訂閱
  7. 6:寫和訂閱
  8. 7:讀、寫和訂閱

希望它對與我面臨相同問題的人有所幫助:D!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM