Mqtt 用于订阅的Mosquito auth插件ACL

Mqtt 用于订阅的Mosquito auth插件ACL,mqtt,acl,mosquitto,Mqtt,Acl,Mosquitto,我目前正在使用mosquitto代理,看看是否可以用它构建一些有趣的东西,我发现了一个名为mosquitto auth plugin的身份验证插件 我遵循插件的文档,使用postgres作为后端表。它似乎与用户身份验证有关。当谈到ACL时,我发现发布ACL就在现场,但订阅ACL是我无法理解的 |--获取用户:karthik 1546887525:|--getuser(karthik)通过postgres的身份验证=1 1546887525:作为karthik(c1,k60,u'karthik'

我目前正在使用mosquitto代理,看看是否可以用它构建一些有趣的东西,我发现了一个名为mosquitto auth plugin的身份验证插件

我遵循插件的文档,使用postgres作为后端表。它似乎与用户身份验证有关。当谈到ACL时,我发现发布ACL就在现场,但订阅ACL是我无法理解的

|--获取用户:karthik
1546887525:|--getuser(karthik)通过postgres的身份验证=1
1546887525:作为karthik(c1,k60,u'karthik')从127.0.0.1连接的新客户端。
1546887525:未指定遗嘱消息。
1546887525:正在将CONNACK发送到karthik(0,0)
1546887525:从karthik收到订阅
1546887525:测试/测试(QoS 0)
1546887525:|--mosquitto_auth_acl_check(…,客户端id不可用,karthik,测试/测试,MOSQ_acl_WRITE)
1546887525:|--超级用户:karthik
1546887525:|--用户为0
1546887525:|--用户名:karthik,主题:测试/测试,附件:4
1546887525:|--aclcheck(karthik,测试/测试,4)授权=0

1546887525:向karthik发送子包解决了问题。在新的mosquitto 1.5版本中,MOSQ\u ACL\u SUBSCRIBE是一个额外的增强功能,在ACL检查中引入了一个额外的位。该值现在从0变为7(因为有3位),而不是0-3(因为有2位)

因此,现在数据库中ACL表上的读/写值必须在0到7之间变化

  • 0:没有访问权限
  • 1:读
  • 2:写
  • 3:读写
  • 4:订阅
  • 5:阅读和订阅
  • 6:编写和订阅
  • 7:读、写和订阅
  • 希望它能帮助那些和我面临同样问题的人:D