Skip to content

MQTT 5.0 增强认证 - SCRAM ​

EMQX 提供了基于 Salted Challenge Response Authentication Mechanism(SCRAM)的增强认证功能,此认证器使用 EMQX 内置数据库来存储客户端凭证(用户)。

SCRAM 认证是一种比密码认证更复杂的机制,它依赖于 MQTT 5.0 提供的增强认证机制,需要在连接期间交换额外的 MQTT 报文。同时由于 SCRAM 认证不依赖外部数据源,因此使用更加简单轻量。

TIP

SCRAM 认证仅支持使用 MQTT v5.0 的连接。

通过 Dashboard 配置 ​

  1. 在 EMQX Dashboard 页面,点击左侧导航栏的访问控制 -> 认证。

  2. 在认证页面,点击创建。

  3. 依次选择认证方式为 SCRAM,数据源为内置数据库,点击下一步进入配置参数步骤:

    SCRAM
  4. 按照以下说明配置数据源:

    • 密码加密方式: 按照实际需求选择sha256 或 sha512。
    • 迭代次数:此参数定义了在 SCRAM 身份验证过程中用于哈希密码的迭代次数。较高的迭代次数通过增加哈希过程的计算开销来提高安全性,从而减缓暴力破解攻击的速度。默认值为 4096。调整此值会影响性能和安全性,因此应根据系统需求进行配置。
    • 调用条件:一个 Variform 表达式,用于控制是否将此 Built-in Database 认证器应用于客户端连接。该表达式会根据客户端的属性(例如 username、clientid、listener 等)进行评估。如果表达式的结果为字符串 "true",则会触发认证器。否则,认证器将被跳过。有关调用条件的更多信息,请参见认证器调用条件。
  5. 点击创建完成设置。

通过配置文件配置 ​

配置示例如下:

hcl
{
    mechanism = scram
    backend = built_in_database

    algorithm = sha512
    iteration_count = 4096
}

其中:

  • algorithm:对应 Dashboard 的密码加密方式;可选值:sha256 或 sha512
  • iteration_count(可选):输入一个整数以指定迭代次数,默认值: 4096