(上圖是網路上找的)在先前的範例中,MQTT Server是沒有使用身份驗證的,這在測試階段是OK的,但若是在正式的應用狀況下這樣做是不恰當的。接下來就是要實作為MQTT Server加上身份驗證的功能。
其實身份驗證的功能主要就是為MQTT Server加入使用者帳號,所以一開始要先將允許anonymous進入關閉,打開
C:\Program Files (x86)\mosquitto\mosquitto.conf
將 #allow_anonymous true 修改成 allow_anonymous false
使用系統管理員的身份執行命令提示字元,利用如下的指令,建立使用者帳號與密碼
mosquitto_passwd.exe -c "C:\Program Files (x86)\mosquitto\你的密碼檔案" username
檔案中會出現使用者帳號的相關內容
再次修改mosquitto.conf,將 #password_file 修改成
password_file C:\Program Files (x86)\mosquitto\pskfileC:\Program Files (x86)\mosquitto\你的密碼檔案
使用如下的指令啟動MQTT Server
mosquitto.exe -v -c "C:\Program Files (x86)\mosquitto\mosquitto.conf"
使用如下的指令到MQTT Server訂閱主題(附帶使用者帳號與密碼)
mosquitto_sub.exe -h 127.0.0.1 -t topic -u username -P password
使用如下的指令到MQTT Server發佈主題(附帶使用者帳號與密碼)
mosquitto_pub.exe -h 127.0.0.1 -t topic -m test -u username -P password
在之前MQTT資料的抓取所寫的WindowsForm程式中,只要在連結MQTT Server的指令上,多加使用者帳號與密碼即可
同樣的,在之前ESP8266 D1 mini傳送資料到MQTT Server、接收資料進行相關控制所寫的Arduino程式中,只要在連結MQTT Server的指令上,多加使用者帳號與密碼即可
吔!又寫完了,又可以去玩鋼彈大亂鬥了!