用户名密码认证

环境信息

  • EMQX 版本:5.0.8
  • 操作系统及版本:paho java
  • 其他

问题描述

在dasbord的认证里添加了用户名密码的加密加盐的认证,启动客户端提示用户名或者密码错误。

配置文件及日志

这是客户端连接代码,密码和用户名都是没加密之前的,不知道为啥提示错误的用户名或者密码。
client = new MqttClient(mqttProperties.getHostUrl(), UUID.randomUUID().toString(), new MemoryPersistence());
MqttConnectOptions options = new MqttConnectOptions();
options.setCleanSession(true);
options.setUserName(mqttProperties.getUsername());
options.setPassword(mqttProperties.getPassword().toCharArray());
options.setConnectionTimeout(mqttProperties.getTimeout());
options.setKeepAliveInterval(mqttProperties.getKeepalive());
options.setAutomaticReconnect(true);
options.setSocketFactory(SslUtil.getSocketFactory(cafilePath));
MqttPushClient.setClient(client);
client.setCallback(pushCallback);
client.connect(options);

我自己试了下5.0,是可以的啊。

应该是密码没对吧。密码已经加个密了,所以不可能在明文再查看,
你可以先试一下。

  1. 不加密。是不是连接成功。然后再逐步的上加密。
  2. 加一个新的用户/密码,试试。

我再描述下我的问题吧:禁用掉这个加密认证,就可以连接成功,开启后就报错误的用户名或密码。

看起来像是你改了加密方式在加密与不加密之间来回改时,有缓存。
你可以在用户管理那里把用户删掉,设置好正确的加密方式后,再新增加用户。这样这个用户的加密方式就是新的了。

你好,麻烦问一下你解决了吗?我也遇到了相同的问题

我这边是如果不加盐进行加密的话,可以正常连接。。但一旦配置加盐之后,就报错

加密 hash、加盐方式一经配置就不能更改,更改会导致之前的数据作废(数据库没有存储明文密码,所以改了 hash 跟加盐后无法自动更改生成的 password_hash)

我用的是mysql认证,连接的是我们自己的库,我们更改加密方式和加盐方式之后,自己库里的密码我也改成了相应的方式。这里你说的之前数据作废原因是因为emqx缓存了?还是emqx单独记录了一份数据

认证目前没有缓存,只有授权有。
改完加盐配置,SQL 也需要改一下,确保查询结果包含 password_hash 跟 salt 字段