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的鉴权