是否有任何提示可以让连接的客户端在 MQTT 中输入用户名和密码?特别是蚊子

Is there any tips to get username and password inputed by connected client in MQTT ? especially Mosquitto

我是 mqtt 的新手,我尝试创建一些东西来仅通过他们的用户名密码来验证发布者和订阅者(​​因此允许匿名的 mqtt 配置是正确的)。如果他们(发布者和订阅者)有相同的用户名密码,数据表单发布者将被发送给订阅者。通过这样做,我们不需要在我们的 mqtt 代理中设置新的用户名密码。

所以,我需要一些东西来帮助我获取发布者和订阅者输入的用户名和密码。 我正在使用 linux 和 go 语言。帮助解决这些问题将非常有帮助。谢谢

Mosquitto 有一个身份验证插件 API,可用于对客户端进行身份验证和授权。您可以使用它来检查 username/passwords 用户,还可以存储控制用户和 publish/subscribe 访问哪些主题的 ACL。

也就是说,正常的 MQTT 身份验证机制通过控制对主题的访问来工作。给定的使用可以具有对主题(或主题模式)的读取(订阅者)、写入(发布者)或两者的访问权限。

这意味着 ACL 在订阅或发布时应用,而不是在确定是否应将消息传递给特定客户端时应用。

您可以通过在任何给定主题前加上用户名来实现您想要的效果,例如

用户 foo 将始终在 foo/... 上发布消息并可以订阅 foo/#

mosquitto ACL 方案内置支持将用户名替换为主题模式,因此您可以执行以下操作:

pattern readwrite %u/#