Emqx5.0认证授权
1 docker-compose安装emqx
docker-compose.yml配置文件如下:
version: '3'
services:
emqx:
image: emqx/emqx:5.0.14
container_name: emqx
restart: unless-stopped
environment:
- "EMQX_NAME=emqx"
- "TZ=Asia/Shanghai"
healthcheck:
test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
interval: 5s
timeout: 25s
retries: 5
network_mode: host
2 认证
客户端连接认证
(1) 进入dashboard页面创建认证
(2) 创建mqtt_user数据表
password_hash
: 必需,数据库中的明文或散列密码字段salt
: 可选,为空或不存在时视为空盐(salt = ""
)is_superuser
: 可选,标记当前客户端是否为超级用户,默认为false
CREATE TABLE `mqtt_user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(100) DEFAULT NULL,
`password` varchar(100) DEFAULT NULL,
`salt` varchar(35) DEFAULT NULL,
`is_superuser` tinyint(1) DEFAULT 0,
`created` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `mqtt_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
(3)选择认证方式
(4)选择数据源
(5)配置参数
3 授权
连接主题授权
(1)创建mqtt_acl表
permission默认值为:allow
action默认值为:all
(2)选择数据源
(3)配置参数
4 测试
使用MQTTX客户端进行测试
(1) 测试认证
如果mqtt_user表中不存在Username和密码或者输入有误则不能够连接
(2) 测试授权
如果mqtt_acl表中的Username下没有该主题或者输入的Username有误则不能够发送内容到主题中