Skip to content

扩展认证

扩展认证帮助用户使用自己服务进行认证,支持外部数据库如 MySQL, Redis 作为数据源,或者连接到 HTTP 服务做认证鉴权。

提示

Serverless 部署不支持扩展认证功能。

扩展认证数据源

HTTP 认证

MySQL 认证

PostgreSQL 认证

Redis 认证

JWT 认证

TIP

最多支持创建两个扩展认证数据源。

认证排序

添加了扩展认证数据源之后,用户可以对认证数据源做排序。部署将按照从左到右的顺序进行认证,默认的认证链顺序为默认认证 -> 扩展认证。

  • 如果认证成功,终止认证链并允许客户端接入。
  • 如果认证失败,终止认证链并禁止客户端接入。
  • 如果当前数据源未能匹配,将进入下一个认证源进行认证。

如何创建认证链

您可以在部署页面的访问控制 -> 客户端认证 -> 扩展认证中创建认证链。当配置并连接了扩展认证数据源后,您将在页面上看到排序设置区域。

  1. 点击认证排序,进入认证顺序设置页面。
  2. 拖动认证数据源的图标,左右排列进行认证顺序的编排。
  3. 排序完成后,点击确认保存更改。

auth_management

外部资源缓存

提示

外部资源缓存功能适用于 EMQX 5.9 及以上版本的专有版部署。

EMQX Platform 支持对来自外部后端(如 MySQL 或 Redis)的认证结果进行缓存。该缓存机制可提升认证查询的性能,减少在高吞吐量场景下对外部资源的重复访问。

注意

外部资源缓存仅适用于扩展认证数据源。对于默认的密码认证,EMQX 不使用该缓存机制。

外部资源缓存的工作原理

外部资源缓存用于存储客户端认证的结果,这些结果在整个集群中的所有客户端会话之间共享,有效避免重复访问外部认证后端。

认证流程如下:

  1. 客户端连接并触发认证操作。
  2. EMQX Platform 首先在缓存中查找是否已有对应的认证结果:
    • 如果找到了有效的结果,则视为缓存命中,无需访问外部后端。
    • 如果未找到缓存结果,则视为缓存未命中,EMQX Platform 会向外部后端发起查询。
  3. 从后端返回的认证结果将被存入缓存,用于后续请求,并计入缓存写入指标。

该机制有助于降低认证延迟、减少外部资源调用,并在高负载下维持系统响应能力。

启用和配置外部资源缓存

您可以在部署页面的访问控制 -> 客户端认证 -> 扩展认证中启用并配置外部资源缓存。当扩展认证数据源已配置并连接后,页面将显示缓存设置区域。

  1. 点击外部资源缓存设置打开侧边栏面板。
  2. 在面板中点击启用外部资源缓存开关以开启或关闭缓存功能。
  3. 启用后,可配置以下缓存参数:
    • 最大缓存数量:每个节点可缓存的最大条目数。默认值:1,000,000。
    • 最大内存:缓存可占用的最大内存。默认值:100 MB。
    • 缓存过期时间:每条缓存项的有效时长。默认值:1 分钟。
  4. 点击更新应用配置。

监控外部资源缓存状态

若要实时查看缓存指标和使用情况:

  1. 将鼠标悬停在外部资源缓存设置右侧的箭头上;
  2. 点击外部资源缓存状态,弹出侧边栏查看实时缓存指标。

可查看的缓存指标包括:

  • 内存占用:当前缓存占用的总内存。
  • 缓存条目数:当前存储的缓存认证结果总数。
  • 缓存命中:EMQX Platform 成功在缓存中找到有效结果,避免访问外部后端的次数。
    • 展示数据包括:当前速率、5 分钟平均值、最大速率
  • 缓存未命中:EMQX Platform 未能在缓存中找到结果,因而查询外部后端的次数。
    • 展示数据包括:当前速率、5 分钟平均值、最大速率
  • 缓存插入:在未命中后新增写入缓存结果的次数。
    • 展示数据包括:当前速率、5 分钟平均值、最大速率

您可以通过面板右上角的按钮刷新或重置这些统计数据。

external_resource_cache_status