Mosquitto: MQTT API认证如何工作
本文档属于API认证指南的一部分。您可以在此处查看完整指南:如何使用外部API认证数千台设备。
👋 欢迎查阅 Stackhero 文档!
Stackhero 为您提供一个全托管的 Mosquitto MQTT cloud 环境,专为高可靠性和灵活性设计:
- 无限制的消息吞吐量和数据传输,确保您的工作流不会受到人为限制。
- 通过您自有的外部 API 实现无限制的设备认证,让设备接入和访问管理更加便捷。
- 高级 ACLs,可对主题、用户和操作进行精细化权限控制。
- 提供自定义域名,内置HTTPS,为您的终端提供安全且具备品牌形象的访问入口(例如:https://mqtt.your-company.com)。
- 一键升级,轻松应用功能改进或安全补丁,无需繁琐操作。
- 始终如一的高性能与强安全性,每个实例均运行在专属私有基础设施上。
加速您的 IoT 项目,降低运维负担。只需几分钟,您即可拥有一个安全、可用于生产环境的 Mosquitto MQTT cloud hosting 实例。
当您有超过20台物联网设备或需要详细的主题ACL管理时,使用外部API认证特别有用。
当设备连接到MQTT时,Mosquitto会向您的API发送一个HTTP POST请求。请求包含一个JSON负载,其中包括设备的用户名和密码。如果您的API返回HTTP状态码200,则设备被授权。任何不是200的状态码(如401)都会导致设备被拒绝访问。
在ACL验证期间,会传输四个参数:username、clientid、topic和acc。您的API应验证username是否被允许在topic上执行由acc定义的操作。acc参数定义如下:
- 读取访问 (1)
- 写入访问 (2)
- 读写访问 (3)
- 订阅访问 (4)
例如,如果用户userA尝试订阅主题sensors/temperatures,您的API将收到以下JSON:
{
"username": "userA",
"clientid": "userA",
"topic": "sensors/temperatures",
"acc": 4
}
当您通过API使用用户认证时,您仍然可以在Stackhero仪表板中手动定义用户。 在这种情况下,手动定义的用户将被优先考虑。