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. 按照以下说明配置数据源:

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

通过配置文件配置

配置示例如下:

hcl
{
    mechanism = scram
    backend = built_in_database

    algorithm = sha512
    iteration_count = 4096
}

其中:

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