【发布时间】:2014-12-19 05:56:08
【问题描述】:
我们可以阻止设备连接到 MQTT 服务器吗?
我们可以阻止设备订阅主题吗?
我们在 MQTT 服务器上是否有任何设备注册。所以我们只能允许已知设备?如果我们有一些注册机制,我们可以使用 API 动态完成吗?
【问题讨论】:
标签: android mqtt mosquitto iot hivemq
我们可以阻止设备连接到 MQTT 服务器吗?
我们可以阻止设备订阅主题吗?
我们在 MQTT 服务器上是否有任何设备注册。所以我们只能允许已知设备?如果我们有一些注册机制,我们可以使用 API 动态完成吗?
【问题讨论】:
标签: android mqtt mosquitto iot hivemq
HiveMQ 和 mosquitto 等流行的 MQTT 代理允许身份验证和授权。如果您碰巧使用 HiveMQ,则有一个 file authentication plugin 可用,它允许您通过用户名/密码限制对代理的访问。
如果您已经拥有可以使用 Java 调用的 API 等身份验证机制(例如 HTTP REST API、SOAP Web 服务、数据库等),那么使用 the plugin system 将其插入 HiveMQ 非常容易。您可以看到与数据库here on Github 集成的示例插件。另一个你可以看的插件是Stormpath plugin,源代码也是available on Github。
强制性免责声明:我为 HiveMQ 背后的公司工作。
【讨论】:
一些特性与代理实现密切相关,而另一些则取决于 MQTT 规范。
当客户端连接到代理时,它会提供客户端 ID 和(可选)用户名和密码。与具体的代理实现相关,它可以提供一种身份验证机制,以便您可以根据客户端 ID、用户名和密码阻止设备连接。
在最新的 MQTT 3.1.1 规范中,您可以在 SUBACK 消息中设置拒绝订阅的错误。同样在这种情况下,取决于代理实现如何阻止设备订阅。
如您所见,MQTT 规范为您提供了一些身份验证机制的功能,但这些功能是否可用(并且以不同的方式)取决于特定的代理实现。
保罗。
【讨论】: