• 【EMQX 5.0】2.2.4 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表

    1. CREATE TABLE `mqtt_user` (
    2. `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    3. `username` varchar(100) DEFAULT NULL,
    4. `password_hash` varchar(100) DEFAULT NULL,
    5. `salt` varchar(35) DEFAULT NULL,
    6. `is_superuser` tinyint(1) DEFAULT 0,
    7. `created` datetime DEFAULT NULL,
    8. PRIMARY KEY (`id`),
    9. UNIQUE KEY `mqtt_username` (`username`)
    10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

    1.3 认证链(主要讲解 EMQX5.0)

    • 所有认证器都认证失败,拒绝连接
    • 只要有一个认证器认证成功,允许连接
    • 客户端多、连接速率高使用 Redis 作为数据源的认证器(Redis 认证器)与 MySQL 或者 PostgreSQL 认证器搭配使用,也就是将 Redis 作为缓存层以提高查询性能。
    • MQTT 客户端的认证支持认证链(多个顺序运行的认证器组成)
    • 通过网关接入的客户端仅支持使用单个认证器
    • 认证链中不允许出现相同类型的认证器

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

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

    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认证的先后,只要有一个认证成功,均可以连接

  • 相关阅读:
    Android逆向学习(三)vscode修改smali绕过vip
    驱动开发:内核字符串转换方法
    为chrome浏览器单独设置代理服务器
    【PAT甲级】1110 Complete Binary Tree
    A. Tile Painting
    LibTorch中TensorOptions的使用
    〔020〕Stable Diffusion 之 骨骼姿势 篇
    振弦采集模块主动上传测量数据( UART)
    面向对象——封装
    致敬第一个1024(第一次Java代码编程)
  • 原文地址:https://blog.csdn.net/ladymorgana/article/details/127432180