EMQ之emqx_auth_username密码配置auth.user.password_hash不生效
参考文档
- 插件 emqx-auth-username
- 插件 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 数据库中保存的是加密后的值