Mosquitto搭建Android推送服務(四)Mosquitto服務器用戶登錄與權限配置


文章鋼要:

1、對服務器進行多用戶配置

2、根據不同用戶給予不同權限

一、Mosquitto的用戶機制

mosquitto中可以添加多個用戶,只有使用用戶名和密碼登陸服務器才允許用戶進行訂閱與發布操作。可以說用戶機制是mosquitto重要的安全機制,增強服務器的安全性。

用戶與權限配置需要修改3處地方:

1、mosquitto中最最最重要的配置文件mosquitto.conf。

2、pwfile.example (保存用戶名與密碼)

3、aclfile.example (保存權限配置)

首先給我們的服務器增加2個用戶,一個叫userName密碼是1,一個叫userName2 密碼是2

第一步:

打開mosquitto.conf文件,找到allow_anonymous節點,這個節點作用是,是否開啟匿名用戶登錄,默認是true。

我們需要將allow_anonymous節點前面的"#"去掉,然后后面寫false。不允許匿名用戶登錄。如下:

修改前:#allow_anonymous

修改后:allow_anonymous false

第二步:

找到password_file節點,這個節點是告訴服務器你要配置的用戶將存放在哪里

將前面的“#”去掉,並且在后面寫上pwfile.example文件的路徑,注意:是絕對路徑。例如:

修改前:#password_file

修改后:password_file /etc/mosquitto/pwfile.example (這里的地址根據自己文件實際位置填寫)

第三步:

創建用戶名和密碼,打開命令窗口。鍵入:mosquitto_passwd -c /etc/mosquitto/pwfile.example userName

然后鍵入2次密碼,用戶創建成功。

-c 創建一個用戶

 /etc/mosquitto/pwfile.example  創建到pwfile.example文件中

userName 創建的用戶名

此時userName用戶創建完畢。

第四步:

創建userName2用戶。

在命令窗口鍵入mosquitto_passwd /etc/mosquitto/pwfile.example userName2

輸入2次密碼,用戶創建成功

注意:第二次輸入用戶不用-c ,如果加上-c會將以前創建的用戶覆蓋。

至此用戶創建完畢。

打開pwfile.example看一下結果,類似下圖,KKLL與KKLL2為用戶,“:”后面是加密的密碼

 

二、Mosquitto權限

Mosquitto權限是根據topci控制的,類似與目錄管理。您可以設定每個用戶訂閱/發布權限,也可以設定每個用戶可訪問的topic范圍,從而達到權限控制的目的。

這里我們需要用到剛才創建的2個用戶。

userName 設置為訂閱權限,並且只能訪問的主題為"root/123/#"

userName2 設置為發布權限,並且只能訪問的主題為"root/123/#"

如果用userName進行發布是不會成功的,反過來用userName2進行訂閱同樣不會接受到任何信息。因為他們的權限不同。

第一步:增加Mosquitto權限

打開aclfile.example,在最下面鍵入如下文字:

user userName

topic read root/123/#

user userName2

topic write root/123#

--------------------------------

read 訂閱權限

write 發布權限

# 通配符,表示所有的

保存退出。

如下圖所示:

 

第二步:修改Mosquitto.conf

打開Mosquitto.conf文件,找到acl_file節點。修改其內容所示:

修改前:

#acl_file

修改后:

acl_file /etc/mosquitto/aclfile.example

將前面的#號去掉,后面地址根據自己文件實際位置填寫

 三、測試

訂閱:

mosquitto_sub -t root/123/# -u userName -P 1 

注意:-P中的P為大寫。

發布:

mosquitto_pub -t root/123/123 -u userName2 -P 2 -m "hello word!!!" 

在訂閱端會收到hello word信息。

對服務器的權限用戶設置完畢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM