【EMQX 5.0】2.2.4 - 1 Authentication 认证

1. 本节主要介绍(和EMQX 4.0的区别点)

    内置数据库(Mnesia)的密码认证 MySQL 的密码认证 认证链(主要讲解)

步骤参考

总结:

    EMQX 4.0 插件 EMQX 5.0 全部集成,使用功能时均不需要开启插件

如:开启用户名认证也不需要开启emqx_auth_username,其实EMQX 5.0 没有这些开启插件的入口

1.1 内置数据库(Mnesia)的密码认证

1.2 MySQL 的密码认证

注意:5.0 的表结构和 4.0不兼容,先建 mqtt数据库 + mqtt_user表

CREATE TABLE `mqtt_user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(100) DEFAULT NULL,
  `password_hash` 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;

1.3 认证链(主要讲解)

当同时启用多个认证方式时,EMQX将按照插件开启先后顺序进行链式认证:

    成功,终止认证链,客户端接入 失败,终止认证链,禁止客户端接入

(前面认证忽略)直到最后一个认证方式仍未通过,根据匿名认证配置判定

    匿名认证开启时,允许客户端接入(EMQX 5.0 默认) 匿名认证关闭时,禁止客户端接入(EMQX 4.0)

1.3.1 图解

1.3.2 忽略与认证链中认证的先后顺序

EMQX 5.0 中

    是否启动:代表是否忽略 顺序:上面优先级最高(如图:Built-in Database 优先级高于MySQL)

1.4 示例 (EMQX 5.0 中效果)

  1. Built-in Database 开启 客户端ID认证
  2. MYsql 开启 用户名认证

无论1和2认证的先后,只要有一个认证成功,均可以连接

经验分享 程序员 微信小程序 职场和发展