EMQ之emqx_auth_username密码配置auth.user.password_hash不生效


参考文档

  1. 插件 emqx-auth-username
  2. 插件 emqx-auth-mysql

emqx-auth-mysql

先看 emqx-auth-mysql 中关于 auth.mysql.auth_query 的描述:

Type Default
string select password from mqtt_user where username = ‘%u’ limit 1

说明:
认证时使用的 MySQL 选取语句,选取出来的数据 将与 经过由 auth.mysql.password_hash 指定的加密方式加密的密码 进行比较,
比较后内容一致的客户端将被允许登录。
加盐后存储的密码需要同时选取盐对应的字段,例如 select password, salt from mqtt_user where username = '%u' limit 1

也就是说:

  • MySQL数据库表中保存的 password 是加密后的值
  • 客户端输入的是明文密码

emqx-auth-username

auth.user.password_hash 的描述:

Type Optional Value Default
enum plain, md5, sha, sha256 sha256

说明:
密码存储至数据库时使用的 Hash 算法。

  • emqx-auth-username.conf 中保存的是明文密码
  • 客户端输入的也是明文密码
  • 但是 erlang 数据库中保存的是加密后的值