mosquitto的鉴权配置

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

 

你可能感兴趣的:(消息协议)