扩展认证
扩展认证帮助用户使用自己服务进行认证,支持外部数据库如 MySQL, Redis 作为数据源,或者连接到 HTTP 服务做认证鉴权。
提示
Serverless 部署不支持扩展认证功能。
扩展认证数据源
TIP
最多支持创建两个扩展认证数据源。
认证排序
添加了扩展认证数据源之后,用户可以对认证数据源做排序。部署将按照从左到右的顺序进行认证,默认的认证链顺序为默认认证 -> 扩展认证。
- 如果认证成功,终止认证链并允许客户端接入。
- 如果认证失败,终止认证链并禁止客户端接入。
- 如果当前数据源未能匹配,将进入下一个认证源进行认证。
如何创建认证链
您可以在部署页面的访问控制 -> 客户端认证 -> 扩展认证中创建认证链。当配置并连接了扩展认证数据源后,您将在页面上看到排序设置区域。
- 点击认证排序,进入认证顺序设置页面。
- 拖动认证数据源的图标,左右排列进行认证顺序的编排。
- 排序完成后,点击确认保存更改。
外部资源缓存
提示
外部资源缓存功能适用于 EMQX 5.9 及以上版本的专有版部署。
EMQX Platform 支持对来自外部后端(如 MySQL 或 Redis)的认证结果进行缓存。该缓存机制可提升认证查询的性能,减少在高吞吐量场景下对外部资源的重复访问。
注意
外部资源缓存仅适用于扩展认证数据源。对于默认的密码认证,EMQX 不使用该缓存机制。
外部资源缓存的工作原理
外部资源缓存用于存储客户端认证的结果,这些结果在整个集群中的所有客户端会话之间共享,有效避免重复访问外部认证后端。
认证流程如下:
- 客户端连接并触发认证操作。
- EMQX Platform 首先在缓存中查找是否已有对应的认证结果:
- 如果找到了有效的结果,则视为缓存命中,无需访问外部后端。
- 如果未找到缓存结果,则视为缓存未命中,EMQX Platform 会向外部后端发起查询。
- 从后端返回的认证结果将被存入缓存,用于后续请求,并计入缓存写入指标。
该机制有助于降低认证延迟、减少外部资源调用,并在高负载下维持系统响应能力。
启用和配置外部资源缓存
您可以在部署页面的访问控制 -> 客户端认证 -> 扩展认证中启用并配置外部资源缓存。当扩展认证数据源已配置并连接后,页面将显示缓存设置区域。
- 点击外部资源缓存设置打开侧边栏面板。
- 在面板中点击启用外部资源缓存开关以开启或关闭缓存功能。
- 启用后,可配置以下缓存参数:
- 最大缓存数量:每个节点可缓存的最大条目数。默认值:1,000,000。
- 最大内存:缓存可占用的最大内存。默认值:100 MB。
- 缓存过期时间:每条缓存项的有效时长。默认值:1 分钟。
- 点击更新应用配置。
监控外部资源缓存状态
若要实时查看缓存指标和使用情况:
- 将鼠标悬停在外部资源缓存设置右侧的箭头上;
- 点击外部资源缓存状态,弹出侧边栏查看实时缓存指标。
可查看的缓存指标包括:
- 内存占用:当前缓存占用的总内存。
- 缓存条目数:当前存储的缓存认证结果总数。
- 缓存命中:EMQX Platform 成功在缓存中找到有效结果,避免访问外部后端的次数。
- 展示数据包括:当前速率、5 分钟平均值、最大速率
- 缓存未命中:EMQX Platform 未能在缓存中找到结果,因而查询外部后端的次数。
- 展示数据包括:当前速率、5 分钟平均值、最大速率
- 缓存插入:在未命中后新增写入缓存结果的次数。
- 展示数据包括:当前速率、5 分钟平均值、最大速率
您可以通过面板右上角的按钮刷新或重置这些统计数据。