Mosquitto: MQTT API认证如何工作

本文档属于API认证指南的一部分。您可以在此处查看完整指南:如何使用外部API认证数千台设备

👋 欢迎来到 Stackhero 文档!

Stackhero 提供即用型 Mosquitto MQTT 云 解决方案,具有众多优势,包括:

  • 无限制的消息交换和传输。
  • 通过外部 API 进行无限制的设备认证。
  • 针对主题、用户和操作的高级 ACL
  • 使用 HTTPS 保护的可定制域名(例如,https://mqtt.your-company.com)。
  • 只需点击即可轻松更新
  • 专用私有 VM提供的最佳性能和强大安全性

节省时间简化您的生活:只需 5 分钟即可试用 Stackhero 的 Mosquitto MQTT 云托管 解决方案!

当您有超过20台物联网设备或需要详细的主题ACL管理时,使用外部API认证特别有用。

当设备连接到MQTT时,Mosquitto会向您的API发送一个HTTP POST请求。请求包含一个JSON负载,其中包括设备的用户名和密码。如果您的API返回HTTP状态码200,则设备被授权。任何不是200的状态码(如401)都会导致设备被拒绝访问。

在ACL验证期间,会传输四个参数:usernameclientidtopicacc。您的API应验证username是否被允许在topic上执行由acc定义的操作。acc参数定义如下:

  1. 读取访问 (1)
  2. 写入访问 (2)
  3. 读写访问 (3)
  4. 订阅访问 (4)

例如,如果用户userA尝试订阅主题sensors/temperatures,您的API将收到以下JSON:

{
  "username": "userA",
  "clientid": "userA",
  "topic": "sensors/temperatures",
  "acc": 4
}

当您通过API使用用户认证时,您仍然可以在Stackhero仪表板中手动定义用户。 在这种情况下,手动定义的用户将被优先考虑。