emqx

一 EXQM 认证方式

  • Password-Based: 用户名+密码
  • SCRAM: MQTT 5.0 增强型认证
  • JWT: JWT 令牌

二 JWT 认证

[!note] JWT 格式:响应头. 数据块. 加密结果

JWT 例子: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

  1. 响应头

    以下代码经 HS 256 加密后得到

    # 一般固定为
    {
      "alg": "HS256",
      "typ": "JWT"
    }
  2. 数据块

    以下代码经 HS 256 加密后得到

    # 可包含任何数据
    {
      "userid": "1",
      "username": "yanan",
      "iat": 1516239022 # 必须 [jwt生成日期]
    }
  3. 加密结果

    响应头 + 数据块 经过 : secret:加密关键字 加密后得到

[!tip] 提示
在 EMQX 后台指定 Secret

三 JWT 认证流程

  1. 客户端根据 EMQX 里指定的 加密关键字 生成自己的 JWT 令牌
  2. 客户端把自己的 JWT 令牌以 usernamepassword 的值提交
[!tip] 提示
在 EMQX 后台指定提交方式
  1. EMQX 收到客户端提交的 JWT 后解密出 响应头数据块 的数据,并根据 Secret 计算出自己的 JWT 并对比