我有一个基本的MQTT问题:如果我有一个不能配置自己但只能匿名发布或订阅的代理,发布者是否可以在该主题上定义允许的客户?
例如使用mosquitto可以定义ACL文件,但只能在代理站点上定义。
如果不可能,用python加密已发布数据的最佳方法是什么?
不,MQTT发布者绝对不了解或控制哪些客户端可以订阅它发布消息的主题。
MQTT是一种发布/订阅协议,其主要宗旨之一是使发布者与订阅者完全脱钩。发布消息时,订阅者的数量可以为0到n个订阅者。
唯一的控制选项如@GDagger的注释中所述,您可以对有效负载进行加密,因此只有授权的订户才能对其进行解密。由于MQTT有效载荷只是字节的集合,因此您可以发送所需的任何内容(大小限制为256mb)
另一方面,代理具有完全控制权,它可以使用ACL来决定哪些客户端可以发布或订阅哪些主题。