mosquitto的鉴权配置

2020/06 29 10:06

 

五克松 2017-04-24 11:21:39 4126 收藏 1
分类专栏: 消息协议
版权
mosquitto.conf是mosquitto配置的核心文件,具体配置说明可参考mosquitto-conf

对于mosquitto的鉴权配置,主要涉及到以下几个参数

(1) allow_anonymous

有两种取值:true/false   ,true表示允许匿名访问,在这种情况下所有用户均可访问,false表示不允许匿名,必须有相应权限的用户才可以访问

(2)password_file

指向一个配置文件,比如passwd.conf,文件里存放用户名和密码,每一行代表一个用户,格式类似于这样

zzj_sub:$6$Fp989yi4JH+ZRGkX$W2oAovGYZSVpC80PQo5ab4PdVfpRI3fnOuMIq7VsksxIDDLiVTBJdkmPS2Q6Js9A61iS/xP5qusLvDKh/bsqYw==
jinhe_sub:$6$fVpGvj1cR3Lu4DVa$MeylSm3VeI3vcWUu8ymmSJnfzug32iJCTW8l9OUqdpPh6xv0NGK2KfPpiCtQyR0PgfiXRIogXdsQQrCf0h5y/g==

这种文件如何生成呢?可以使用mosquitto自带的mosquitto_passwd命令生成密码文件

mosquitto_passwd -c [最终生成的password_file文件]   [用户名]

#: mosquitto_passwd -c passwd.conf  jinhe_sub

输入命令后,控制台会提示输入新建用户的密码,连续输入两次密码后,则会生成一个passwd.conf文件

注意,mosquitto_passwd -c命令每次都只会生成只包含一个用户的文件,如果你想在passwd.conf中存放多个用户, 可以使用mosquitto_passwd -b 命令

mosquitto_passwd -b [最终生成的password_file文件]   [用户名]   [密码]

mosquitto_passwd -b命令必须在控制台输入明文的密码,且每次只是在passwd.conf中新增一个用户,不会覆盖之前已生成的用户

同时也可以使用mosquitto_passwd -D命令删除一个用户

mosquitto_passwd的具体应用可以参考 http://mosquitto.org/man/mosquitto_passwd-1.html

创建了用户之后,如果我们想让某个用户只能发布或订阅一类主题,怎么办呢?这就需要用到下一个参数acl_file了

(3)acl_file

顾名思义,acl_file是指向配置acl的文件,文件内容类似于下面这样

user mosquitto_pub
topic write test/#
user zzj_sub
topic read test/zzj/#
user jinhe_sub
topic read test /jh/#

上面的例子可以这样理解,用户mosquitto_pub可以发布以test开头的所有主题,用户zzj_sub可以订阅所有以test/zzj开 头的所有主题,用户jinhe_sub可以订阅所有以 test/jh开头的所有主题

关于通配符的使用,有两个通配符可用,#和+,具体用法举例说明

test/jh/# 可匹配  test/jh/a/b/c  ,test/jh/a/b  ,test/jh/a.test/jh

test/jh/+可匹配  test/jh/a ,test/jh/b ,但是不能匹配 test/jh/a/b

另外,若password_file中配置了用户A,但是acl中未配置用户A对应的主题权限,则用户A可以发布和订阅所有的主题

通过以上三个配置基本就可以完成mosquitto的鉴权

————————————————
版权声明:本文为CSDN博主「五克松」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/song_java/java/article/details/70576793

--转载请注明: http://91o.cc/mosquitto%e7%9a%84%e9%89%b4%e6%9d%83%e9%85%8d%e7%bd%ae/