即使这可能不再涉及到你,其他人也会发现它很有用.我在这里关注mosquitto的手册页.
比方说,有一个配置文件,一般是一个,比如mosquitto.conf一个ACL(访问控制列表)acl.conf.
mosquitto.conf启用acl.conf文件以进行访问控制:
acl_file acl.conf
Run Code Online (Sandbox Code Playgroud)
acl.conf 定义访问控制行为:
# users can anonymously publish to the topic 'in'
topic write in
# users can subscribe topics named 'out/%u', where %u is the user's name
pattern read out/%u
# an admin may subscribe to 'in'
# and publish to all subtopics of 'out/' (note the +)
user adminWithSecretName
topic read in
topic write out/+
Run Code Online (Sandbox Code Playgroud)
我们执行mosquitto -c mosquitto.conf使用配置文件运行mosquitto.
在这种情况下,可以通过使用随机生成的用户名来建立动态认证机制.
示例: Alice想要订阅,以便她可以在此处阅读私人消息.她将她的证书与nonce N1一起发送给in.此外,她还out/N1使用N1用户名订阅主题.该模式read out/%u允许.
连接adminWithSecretName和订阅主题的第三方服务器应用程序in接收Alice的消息.它验证其真实性,然后生成新的nonce N2并将其发布到out/N1Alice订阅的位置.
从现在开始 - 至少对于此会话 - out/N2是常规主题,其中Alice分别在此处设备将接收消息.因此,Alice取消订阅并断开表单out/N1并订阅out/N2.第三方服务器应用程序将属于Alice的所有新消息发布到该主题out/N2.
进一步的考虑因素:人们可能还想反思安全性的其他方面,如TLS和/或按消息加密.根据目标安全/隐私的等级,此处讨论的配置可能还需要TLS.另一方面,如果消息是单独加密的,这可能会过时.如果她有权访问有线/ WiFi流,可以拦截(甚至订阅!)消息,因为她会将秘密用户名称视为纯文本.但是:当一个人已经可以访问数据流时,无论如何他/她都可以拦截这些字节.它们使用TLS或按消息加密以任一方式加密.此外,流量分析可以应用于两种方法.
我建议使用TLS或按消息加密.两者都应该,正确实施和应用,导致可比较的安全性.
您可以编写一个插件来为您处理此问题。有关一些示例,请参阅http://mosquitto.org/2013/07/authentication-plugins/。
如果您在 mosquitto 邮件列表上询问,您可能会找到更多答案。