mqtt - Mosquitto Broker 中用户认证的范围是什么?
问题描述
我想在我的平台中集成 MQTT 和 Mosquitto。看来我可以进行用户身份验证(用户/密码,但我更喜欢基于令牌,但这是另一个问题)。我读到的所有内容似乎都在处理用户是否可以访问服务器,但不确定我是否可以建立权限来限制客户端是否可以订阅特定的发布(unix 中的文件权限)
我正在查看文档,似乎没有选项可以处理它或委派此控制,所以我想它无法完成。但我想确定
解决方案
mosquitto 文档应该很清楚,它涵盖了身份验证和授权。
开箱即用的 mosquitto 支持password_file
保存用户名/密码信息的密码文件(由 config 参数指定)。这与将allow_annonymous
参数设置为 false 相结合,将确保您只能以经过身份验证的用户身份连接到代理。
acl_file
config 选项指向控制给定用户可以订阅或发布的主题的 ACL 列表。它使用以下格式:
user <username>
topic [read|write|readwrite] <topic>
pattern [read|write|readwrite] <topic-pattern>
用户名,后跟给出特定主题或主题模式的行以及该用户应具有的访问级别。(模式可以包含%c
替换 clientID 或%u
替换用户名)。
除了基于文件的支持,mosquitto 还有一个身份验证插件 api,这意味着您可以将所有信息卸载到可以在数据库中查找用户和 acls 的代码中。JPMens 有一个示例插件https://github.com/jpmens/mosquitto-auth-plug
推荐阅读
- c# - Mongo c#:Upserting 正在创建一个新文档
- vba - VBA:无法更改 Word 文档中超链接的子地址属性
- java - 如何解决这个警告?- 是原始类型。对泛型类型的引用应该被参数化
- python-3.x - 如何解决 IDLE 中的 ModuleNotFound 错误?
- javascript - 输入焦点时禁用 Javascript 函数
- java - 当列数据类型为字符串时,如何在结果集中的输出值中添加双引号?
- java - 尽管我生成的查询工作正常,为什么 JDBC-MySQL 会在您的 SQL 语法中引发错误?
- python - 熊猫数据框中重复位置的频率
- android - GCM 弃用:旧客户端 SDK
- javascript - jQuery使用select for ajax请求查找所有输入类型