1

我们可以阻止设备连接到 MQTT 服务器吗?

我们可以阻止设备订阅主题吗?

我们在 MQTT 服务器上是否有任何设备注册。所以我们只能允许已知设备?如果我们有一些注册机制,我们可以使用 API 动态完成吗?

4

2 回答 2

3

流行的 MQTT 代理(如HiveMQ和 mosquitto)允许身份验证和授权。如果您碰巧使用 HiveMQ,则有一个文件身份验证插件可用,它允许您通过用户名/密码限制对代理的访问。

如果您已经拥有可以使用 Java 调用的 API 之类的身份验证机制(例如 HTTP REST API、SOAP Web 服务、数据库等),那么使用插件系统将其插入 HiveMQ 非常容易。你可以在 Github 上看到一个与数据库集成的示例插件。您可以查看的另一个插件是Stormpath 插件,源代码也可以在 Github 上找到

强制性免责声明:我为 HiveMQ 背后的公司工作。

于 2014-12-19T08:58:36.440 回答
0

一些特性与代理实现严格相关,而另一些则依赖于 MQTT 规范。

当客户端连接到代理时,它会提供客户端 ID 和(可选)用户名和密码。与具体的代理实现相关,它可以提供一种身份验证机制,以便您可以根据客户端 ID、用户名和密码阻止设备连接。

在最新的 MQTT 3.1.1 规范中,您可以在 SUBACK 消息中设置拒绝订阅的错误。同样在这种情况下,取决于代理实现如何阻止设备订阅。

如您所见,MQTT 规范为您提供了一些身份验证机制的功能,但这些功能是否可用(并且以不同的方式)取决于特定的代理实现。

保罗。

于 2014-12-19T08:23:35.200 回答