Skip to content

通过 HTTP 查询进行认证 ​

EMQX Edge 支持基于 HTTP 的认证,可将客户端身份校验委托给外部 HTTP 服务。当客户端连接时,EMQX Edge 会向认证服务器发送请求。如果服务器返回 HTTP 200,则允许客户端连接;其他状态码会拒绝连接。

工作原理 ​

当客户端发送 CONNECT 报文时,EMQX Edge 会根据配置的方法、请求头和参数构造 HTTP 请求,并发送到配置的 URL。

示例: 客户端 ID 为 sensor-01、用户名为 sensor-user 的客户端尝试连接。使用以下参数配置:

KeyValue
clientid%c
username%u
password%P

EMQX Edge 会填充占位符并发送以下请求:

bash
POST http://127.0.0.1:80/mqtt/auth
Content-Type: application/x-www-form-urlencoded

clientid=sensor-01&username=sensor-user&password=secret

认证服务器检查凭据后,返回 HTTP 200 表示允许连接,返回其他状态码则表示拒绝连接。

注意

HTTP 认证配置变更需要重启 EMQX Edge 后生效。

通过 Dashboard 配置 ​

HTTP 认证位于 Authentication 页面中的 Extended 标签页。进入该标签页时,该认证方式会自动启用。

  1. 在 EMQX Edge Dashboard 中,进入 Authentication > Extended。
  2. 点击 Actions 列中的编辑图标。
  3. 配置 Method、URL、Headers 和 Parameters。
  4. 点击 Save。

img

Method ​

指定 HTTP 请求方法。可选值:POST 或 GET。默认值:POST。

URL ​

指定 HTTP 认证服务器的 URL。例如:http://127.0.0.1:80/mqtt/auth。

Headers ​

指定要包含在 HTTP 请求头中的键值对。

KeyDescription
content-type请求体的媒体类型。可使用 application/x-www-form-urlencoded 或 application/json。
accept可选。你也可以添加 cookie 或 date 等其他请求头。

Parameters ​

指定用于构造请求体(POST)或查询字符串(GET)的参数。每个参数都是一个键值对,其中值是 EMQX Edge 在运行时替换的占位符。

KeyPlaceholderDescription
clientid%cMQTT Client ID
username%u用户名
password%P密码