You need to enable JavaScript to run this app.
导航
客户端认证概述
最近更新时间:2024.12.17 15:32:10首次发布时间:2024.12.17 14:24:10

本文档介绍 MQTT 支持的客户端认证方式、创建认证的注意事项以及认证链等信息。

认证方式

MQTT Dashboard 提供了开箱即用的客户端认证与权限管理功能,您可在 Dashboard 可视化界面快速实现客户端认证授权机制的配置,无需编写代码或手动编辑配置文件,即可对接各类数据源与认证服务。
目前 MQTT 提供了三种客户端认证方式,您可结合实际业务场景选择。

  • Password-Based
    使用客户端 ID用户名 + 密码的认证方式。当 MQTT 客户端尝试连接 MQTT 实例时,需提供身份凭证信息,MQTT 会在指定的数据源中发起查询,并将返回得到的密码与客户端提供的身份信息进行匹配,若匹配成功,则接收该客户端请求。
    Password-Based 认证方式下支持集成的数据源包括内置数据库MySQL
  • JWT
    基于 Token 的认证机制。JWT 认证方式下,无需额外的数据源来保存客户端认证信息,
    客户端可以在用户名或密码字段中携带 JWT token,MQTT 通过预先配置的密钥或公钥,对 JWT 签名进行验证。
  • SCRAM
    MQTT 增强认证方式,支持将认证数据存储在内置数据库中,可实现对客户端和服务器的双向认证。

MQTT 认证器

按照认证方式和数据源来划分,MQTT 内置了以下 4 种认证器,您可点击下表中的连接,获取各种认证器的创建步骤。

认证方式

数据源

认证器创建步骤

Password-Based

内置数据库

创建 Password-Based 认证

MySQL

JWT

-

创建 JWT 认证

SCRAM

内置数据库

创建 SCRAM 认证

注意事项

  • MQTT 默认未开启认证功能,即允许所有客户端连接,但可能存在一些非法客户端,建议您提前配置好至少一种认证方式。
  • 单个 MQTT 实例中最多支持创建 2 个认证器。
  • 单个 MQTT 实例中创建的认证器类型不能重复。
  • 在创建认证器后,MQTT 客户端需要配置对应的认证信息,才可以安全连接到 MQTT。
  • 认证数据源需与 MQTT 实例处于相同 VPC 内。

认证流程

单个 MQTT 实例中最多允许创建 2 个认证器构成一条认证链,认证器将按照在链中的位置顺序执行,如果在当前认证器中未检索到身份凭证,将会切换至链上下一个启用的认证器继续认证。
以 Password-Based 认证方式为例,认证流程通常如下:

  1. 当前认证器执行时检索到了匹配的认证信息,例如用户名一致:
    • 密码完全匹配,则客户端认证通过,允许连接。
    • 密码无法匹配,则客户端认证失败,拒绝连接。
  2. 当前认证器执行时没有检索到匹配的认证信息,例如在数据源中没有查找到数据:
    • 当前认证器之后还有认证器:忽略认证,交由下一认证器继续认证。
    • 前认证器已经是链中最后一个认证器:客户端认证失败,拒绝连接。