gpt4 book ai didi

mqtt - 用于订阅的 Mosquitto-auth-plugin ACL

转载 作者:行者123 更新时间:2023-12-05 02:14:08 27 4
gpt4 key购买 nike

我目前正在使用 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!

关于mqtt - 用于订阅的 Mosquitto-auth-plugin ACL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54080624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com