EMQX 配置 JWT 认证

Nan (/)
2023-10-10T14:25:00+08:00

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 令牌以 username 或 password 的值提交

[!tip] 提示
在 EMQX 后台指定提交方式

3. EMQX 收到客户端提交的 JWT 后解密出 響應頭 與 數據塊 的數據，並根據 Secret 计算出自己的 JWT 并对比