MQTT:Dashboard访问授权
目录
- 一、认证
- 1.1 创建认证器
- 1.2 多认证器
- 二、授权
- 2.1 ACL文件授权配置
- 2.2 使用内置数据库授权配置
一、认证
认证:就是验证客户端的身份。
1.1 创建认证器
- 选择认证方式
- 配置数据源
- 配置数据源的相关参数
认证器创建之后,在使用客户端连接Dashboard时,就需要用户名以及密码的验证了
1.2 多认证器
Dashboard可以创建多个认证器,认证的过程从上往下依次执行。
建表语句
DROP TABLE IF EXISTS `mqtt_user`;
CREATE TABLE `mqtt_user` (`id` int(0) NOT NULL,`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`password_hash` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`salt` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of mqtt_user
-- ----------------------------
INSERT INTO `mqtt_user` VALUES (1, 'root', '63a9f0ea7bb98050796b649e85481845', NULL);SET FOREIGN_KEY_CHECKS = 1;
MySQL查看MD5加密之后的数据
SELECT MD5('root');
二、授权
通常情况下,认证只是验证了客户端身份是否合法,而客户端是否具备发布、订阅某些主题的权限,还需要授权系统来判断,在EMQX中,授权是指对MQTT客户端的发布和订阅操作进行权限控制
。
2.1 ACL文件授权配置
每一条授权独占一行,由四部分组成,使用点(.)进行分割。
{allow, all, subscribe, ["$SYS/#", "#"]}.
第一部分:规则对应的权限,
- allow:允许
- deny:禁止
第二部分:适用此规则的客户端
- all:匹配所有客户端
- {username, “admin”}:指定单用户
- {username, {re, “^dash”}}:正则匹配用户
- {clientid, “admin”}:指定单客户端ID
- {clientid, {re, “^dash”}}:正则匹配客户端ID
- {ipaddr, “127.0.0.1”}:指定单IP地址
- {ipaddr, [“127.0.0.1”, …]}:指定多IP地址
- {‘and’, [Spec1, Spec2, …]}:满足列表中所有规范的客户端
- {‘or’, [Spec1, Spec2, …]}:满足列表中任意规范的客户端
第三部分:指定规则对应的操作
- publish:发布消息
- subscribe:订阅消息
- all:发布和订阅
第四部分:指定规则适用的MQTT主题,支持通配符,可以使用主题占位符
- {allow, all}:允许所有请求
- {deny, all}:禁止所有请求
"t/${clientid}"
:使用主题占位符,当客户端ID为emqx_c的客户端触发检查时,将精准匹配t/emqx_c主题。"$SYS/#"
:通配符匹配$SYS
开头的所有主题,例如:$SYS/foo
、$SYS/foo/bar
。{eq, "foo/#"}
:精确匹配foo/#
主题,主题foo/bar
将无法匹配,此处eq
表示全等比较。
2.2 使用内置数据库授权配置