31

我现在已经为 MQTT 做好了一切设置和工作。我正在使用 IBM wmqtt.jar 和 Mosquitto 代理..

我的 Java Servlet 创建到代理的 MQTTConnection 并在“AndroidDeviceID/myAppName”主题下发布。

Android 客户端订阅了相同的主题...

在我看来,如果有人知道我用户的设备名称,他们可以创建一个简单的 Android 应用程序并在我的 MQTT 代理上订阅该主题。然后他们从我的用户那里得到所有的通知(在这种情况下是即时消息)..

如何正确避免这种情况?

4

4 回答 4

18

Mosquitto 通过用户名和密码身份验证以及使用访问控制列表限制对主题的访问来提供安全性。mosquitto.conf 手册页中有详细信息:http: //mosquitto.org/man/mosquitto-conf-5.html

于 2012-04-07T18:54:12.270 回答
6

ACL 是限制客户端订阅主题的原因,我正在使用 auth-plugin 这样做,这里是链接mosquitto auth plugin

于 2014-04-17T14:05:30.237 回答
4

一般来说,MQTT 保持安全性非常“轻”,因为它最初是为与封闭的传感器网络一起使用而设计的。由代理实现提供例如 SSL 并决定如何处理用户名/密码后端。

消息数据的加密不太可能由协议本身提供,如果这很关键,通常会在应用层完成。

于 2012-04-08T15:49:59.240 回答
2

如果您需要更自定义的方式来处理主题的访问控制和权限,请尝试使用 HiveMQ MQTT 代理。就像文档中解释的那样,您可以使用插件实现自己的行为。这种方法允许您完全决定如何处理客户端、发布和订阅的身份验证和授权 [1]。如果您有兴趣开始使用您自己的插件的最佳方式,请参阅此处 [2]。

顺便说一句,为 HiveMQ [3] 配置 TLS 也很容易。

克里斯蒂安(HiveMQ 团队)

[1] http://www.hivemq.com/docs/plugins/1.5.0/#auth-permission-chapter

[2] http://www.hivemq.com/documentations/getting-started-plugins/

[3] http://www.hivemq.com/docs/hivemq/1.5.0/#hivemqdocs_ssl_tls

于 2014-05-03T18:49:54.923 回答