MQTT 认证:Password、JWT 与 SCRAM
对比 None、Password、JWT 与 SCRAM,在 Mqttable 中填写对应字段,并验证 MQTT 5 认证连接。
- 作者:
- Mqttable
- 更新:
本页目录7 个章节
加载中...
对比 None、Password、JWT 与 SCRAM,在 Mqttable 中填写对应字段,并验证 MQTT 5 认证连接。
加载中...
本文对应 Mqttable 当前的 认证方式控件。先选择 MQTT 5.0;Mqttable 在 MQTT 3.1 和 3.1.1 下不显示此控件,而 SCRAM 本身使用 MQTT 5 增强认证流程。
当 Connection 进入已连接状态、Trace 显示被接受的 CONNACK,并且单独的订阅/发布测试证明该身份具备所需 Topic 权限时,认证验证才算完成。
新建客户端默认选择 Password。请使用 Broker 运维方配置的认证方式和准确凭据格式。只有方式名称还不够:JWT Claim 与 SCRAM Hash 变体也必须匹配 Listener 策略。
只在 Listener 明确允许匿名客户端时使用。连接前清空 Username。 选择 None
会禁用密码控件且不发送密码,已保存的凭据仍会保留;非空 Username
仍可能出现在 CONNECT 中。
使用 Broker 运维方签发的 Username 和 Password。Mqttable 会在
CONNECT 中发送它们,因此应配合 TLS,并优先使用已保存的
SecretRef,而不是反复粘贴明文密码。
Broker 要求在 MQTT Password 字段中携带 JWT 时使用。签名算法、密钥、Claim、 Audience、Issuer、Subject 和过期策略都由 Broker 规则决定。
优先选择 Broker 已启用的准确强 Hash 变体。Mqttable 在本地使用 Username 和 Password 完成 Challenge-Response;密码不会作为普通 CONNECT Password 发送。
只用于兼容明确要求这一旧 Hash 的 Broker。不能随意换成其他 SCRAM 变体:两端必须通告同一种方式。

Password 认证会在 CONNECT 中发送 Username 与 Password;已保存 SecretRef 可以避免在表单中重新显示原始值。
如果 Broker 运维方给出的是完整 Token,把它粘贴到 密码,或保存为 Password SecretRef;不要重新签名。
只有在你持有正确签名材料、并明确知道 Broker 所需 Claim 时,才使用 JWT 工具:
username、iat 和 exp 只是可编辑默认值,不代表 Broker 一定接受。
JWT 工具可在本地签发 HS256 或 RS256 Token;有效密钥、Claim 与过期策略仍由 Broker 决定。
当前源码在内嵌 JWT 工具 中增加了 在 JWT 调试器中打开 入口,保留上图中的生成与预览能力。可带入当前 Token 检查签名和有效期,再选择保留原稿返回,或确认将 Token 填回密码草稿。不会自动保存、连接,也不会读取隐藏的已保存凭据或传入签名密钥。此跳转行为不代表现有安装包已更新;操作和临时数据边界见 本地工具。
不要自行猜测 iss、aud、sub 或签名密钥。结构正确的 JWT 仍可能因签名、Claim 或时间窗口不符合 Broker 策略而被拒绝。

SCRAM 需要 MQTT 5、完全匹配的方式,以及 Username 和 Password;内联错误会阻止不完整配置。
Broker 表单中的 Test Connection 只验证端点、传输和 TLS,不会发送新建客户端表单中的认证设置。
CONNECT 和收到的 CONNACK。Connection Accepted。使用 SCRAM 时,还要把完整的增强认证交换作为证据的一部分。粘贴完整 Token、选择已有内容的 SecretRef,或使用正确密钥与 Claim 生成 Token。表单会在建连前阻止空值。
同时填写 Username 和 Password,并保持 MQTT 5.0。
0x86 Bad User Name or Password
重新核对客户端身份、Secret 或 Token、JWT 签名与过期时间,以及该凭据是否已在当前 Listener 启用。
0x87 Not authorized
Broker 拒绝了该身份或它的建连权限。如果客户端已经连接、只有 Publish 或 Subscribe 失败,应改查 Topic ACL。
0x8C Bad authentication method
确认 Listener 支持 MQTT 5,并检查准确 SCRAM 方式。SHA-1、SHA-256 和 SHA-512 不能互换。
此时尚未进入 MQTT 认证。按照 TLS 证书指南 修复端点、CA 信任、服务器名称或 mTLS 配置。
认证向 Broker 证明客户端身份;TLS 保护网络链路并验证服务器,mTLS 还能额外认证客户端证书。Password 与 JWT 仍需要受保护的传输。
被接受的 CONNACK 只证明客户端可以连接。SUBACK、PUBACK 或 Broker 策略仍可能拒绝 Topic 操作。两个阶段要分别验证,不要在真正问题是 ACL 时替换有效密码。
可重复使用的 Password 或 Token 应使用已保存 SecretRef。不要把 Password、JWT、HMAC Secret 或 RSA Private Key 粘贴到 Issue、聊天或截图。材料一旦暴露,先在 Broker 侧轮换,再替换保存的 Secret。
接下来可继续阅读 TLS 证书、Credentials 或第一条 MQTT 消息教程。