首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用具有动态安全性的mosquitto_pub来创建新用户

无法使用具有动态安全性的mosquitto_pub来创建新用户
EN

Stack Overflow用户
提问于 2022-02-20 22:13:54
回答 1查看 426关注 0票数 0

我的问题是,为什么我不能使用mosquitto_pub来创建新用户?

我似乎无法使用mosquitto_pub命令根据这个自述文件提供的指令在动态安全性中创建新用户:

https://github.com/eclipse/mosquitto/blob/master/plugins/dynamic-security/README.md

就我尝试的内容而言,我成功地使用mosquitto_ctrl命令创建了一个新的用户和角色,以确保动态安全工作。然后我尝试了mosquitto_pub命令,但失败了。让我详细介绍一下下面的mosquitto_ctrl和mosquitto_pub场景。

成功:使用mosquitto_ctrl

我创造了一个这样的角色:

代码语言:javascript
复制
mosquitto_ctrl -u steve -P Pass1234 dynsec createRole role0
mosquitto_ctrl -u steve -P Pass1234 dynsec addRoleACL role0 publishClientSend pizza allow
mosquitto_ctrl -u steve -P Pass1234 dynsec addRoleACL role0 subscribeLiteral pizza allow

然后我做了一个这样的用户:

代码语言:javascript
复制
mosquitto_ctrl -u steve -P Pass1234 dynsec createClient user0
mosquitto_ctrl -u steve -P Pass1234 dynsec addClientRole user0 role0 1

我打开一个终端并输入以下命令:

代码语言:javascript
复制
mosquitto_sub -u user0 -P Pass1234 -t chocolate

我打开第二个终端窗口并放置以下命令:

代码语言:javascript
复制
mosquitto_pub -u user0 -P Pass1234 -t chocolate -m 'I love chocolate'

其结果是,第一个终端windoow打印“我喜欢巧克力”。

失败:使用mosquitto_pub

由于role0已经存在,我想我可以创建一个新用户并将role0分配给该用户。我运行以下命令:

代码语言:javascript
复制
mosquitto_pub -u steve -P Pass1234 -t '$CONTROL/dynamic-security/v1' -m '{"command": "createClient", "username":"user1", "password":"Pass1234", "roles":[{"rolename":"role0", "priority":1}]}';

然后我尝试使用以下命令

代码语言:javascript
复制
mosquitto_sub -u user1 -P Pass1234 -t chocolate

结果是Connection error: Connection Refused: not authorised.,如果我执行systemctl restart mosquitto.serviceuser0user1都会得到相同的连接,而不是授权错误。在上面的所有实验中,/etc/mosquitto/dynamic-security.json只显示了客户端steve和我在新安装了蚊帐2.0之后最初手动设置的admin角色。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-21 00:54:36

我想通了。这个命令起了作用:

代码语言:javascript
复制
mosquitto_pub -u steve -P Pass1234 -t '$CONTROL/dynamic-security/v1' -m '{"commands":[{"command": "createClient", "username":"user0", "password":"Pass1234", "roles":[{"rolename":"role0", "priority":1}]}]}';

基本上,我需要用{"commands": ... }包装我的命令。

我还必须确保我在这里纠正这种情况:

Prevent systemctl restart mosquitto.service from resetting Dynamic Security

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71199272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档