emqx有两个ACL功能我用了但是实际不起作用

环境信息

  • EMQ X 版本:EMQX4.3.5
  • 操作系统及版本:ubuntu20.04
  • 其他

问题描述

我的访问控制集合是用的插件emqx_auth_mogo在mongodb中做的ACL规则权限表,如下图

这是空表,里面什么规则也没有设置,就是最上面的用户名给了个存在的值。

按官网上讲的,我设置这个参数
acl_nomatch = allow,按道理讲就算ACL规则表是空的就像上图里面的空表一样,客户端的消息是可以推送给emqxbroker的但是现在却是只能连接emqx,不能推送消息给它。而且还有另一个参数,就是当我设置acl_deny_action=disconnect
按这个设置来讲,空白表就是未授权,应该断开客户端连接,但是实际emqx也没有断开客户端的连接,如下图所以,两个未授权的客户端面还是连在上面。


而且这两种情况下客户端订阅主题都能连接上,不知道这是什么原因,那个高手能指点一下?

模块里面的功能我都是关掉的
插件里面我也只开了五 个插件emqx_auth_jwt, emqx_auth_mongo,emqx_dashboard, emqx_management ,emqx_web_hook。

配置文件及日志

参考下文档最后的 WARNING 部分:

MongoDB ACL 规则需严格使用上述数据结构。 MongoDB ACL 中添加的所有规则都是 允许 规则,可以搭配 etc/emqx.confacl_nomatch = deny 使用。

你讲的这个参数的用法我后来试了一下,知道怎么用了,但是acl_deny_action=disconnect,这个参数在什么情况下才能正常被 使用,能再给我讲一下吗?就什么情况下能让ACL 检查失败。

ACL 未命中就会导致设备被断开连接