1、emqx5.3
2、访问控制中客户端认证开启mysql数据库的password_based认证
3、对应鉴权表中添加一个测试用户
4、使用测试用户连接,密码错误时会提示并且连接不上
5、使用其他表中没有的用户连接,直接可以连接上
按道理说鉴权表中没有的用户不应该可以连接的吧,应该先判定有没有,再判定用户名、密码、客户ID这些。
1、emqx5.3
2、访问控制中客户端认证开启mysql数据库的password_based认证
3、对应鉴权表中添加一个测试用户
4、使用测试用户连接,密码错误时会提示并且连接不上
5、使用其他表中没有的用户连接,直接可以连接上
按道理说鉴权表中没有的用户不应该可以连接的吧,应该先判定有没有,再判定用户名、密码、客户ID这些。
需要关闭匿名访问吧,不然随便一个不在认证库中的用户名或者空白名都可以。
我们好像也遇到过
可否告知下5.3版本中怎么关闭匿名访问? 之前4.x版本中是在配置文件中修改,5.3的配置文件中找不到对应配置了。
5.0 开始已经移除了允许匿名 allow_anonymous
的配置。所以不需要配置的。
5.0 目前的认证逻辑是,如果没有任何的登陆认证功能开启,那就是允许任何用户链接;如果开启了任何登陆认证器,那只有用户不对都不能登录(包括,密码不对,用户不存在等情况)
所以,从你的现象看,应该是不符合我们预期的。所以需要
问题得到解决了,应该是我exhook 注册了client.connect相关钩子,虽然啥都没做就返回了,但是这个导致虽然配置了mysql库的登陆认证,可是不在库中的客户端用户依然可以连接,库中用户连接如果密码不对无法连接的情况