加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 以编程方式设置mosquitto中的访问控制限制

发布时间:2020-12-20 12:23:13 所属栏目:Python 来源:网络整理
导读:我正在开发一个将使用mqtt的应用程序.我将使用 python库.我一直倾向于使用mosquitto,但却无法以编程方式为其设置访问控制限制.我正在编写的应用程序需要能够区分用户,并且只允许他们订阅某些主题.当前的解决方案看起来像是从配置文件中完成的.在mosquitto中
我正在开发一个将使用mqtt的应用程序.我将使用 python库.我一直倾向于使用mosquitto,但却无法以编程方式为其设置访问控制限制.我正在编写的应用程序需要能够区分用户,并且只允许他们订阅某些主题.当前的解决方案看起来像是从配置文件中完成的.在mosquitto中是否有可扩展的访问控制限制解决方案?如果没有,你知道一个mqtt经纪人存在吗?

解决方法

即使这可能不再涉及到你,其他人也会发现它很有用.我在这里关注mosquitto的 man page.

有两个配置文件,一般是一个,比如说是mosquitto.conf,另一个是ACL(访问控制列表),比如acl.conf.

mosquitto.conf启用acl.conf文件进行访问控制:

acl_file acl.conf

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/+

我们用配置文件执行mosquitto -c mosquitto.conf来运行mosquitto.

在这种情况下,可以通过使用随机生成的用户名来建立动态认证机制.

示例:Alice想要订阅,以便她可以在此处阅读私人消息.她将她的凭证与nonceN1一起发送到.此外,她还使用N1作为用户名将主题输出/ N1.读出的模式/%u允许这样做.

第三方服务器应用程序,以adminWithSecretName连接并订阅主题,接收Alice的消息.它验证其真实性,然后生成新的nonce N2并将其发布到Alice已订阅的out / N1.

从现在开始 – 至少对于此会话 – out / N2是常规主题,其中Alice分别在此处设备将接收消息.因此,Alice取消订阅并断开form out / N1并订阅out / N2.第三方服务器应用程序将属于Alice的所有新消息发布到主题out / N2.

进一步的考虑因素:人们可能还想反思安全性的其他方面,如TLS和/或按消息加密.根据目标安全/隐私的等级,此处讨论的配置可能还需要TLS.
另一方面,如果消息是单独加密的,这可能会过时.如果她有权访问有线/ WiFi流,可以拦截(甚至订阅!)消息,因为她会将秘密用户名称视为纯文本.但是:当一个人已经可以访问数据流时,无论如何他/她都可以拦截这些字节.它们使用TLS或按消息加密以任一方式加密.此外,traffic analysis可以应用于两种方法.

我建议使用TLS或按消息加密.两者都应该,正确实施和应用,导致可比较的安全性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读