(上圖是網路上找的)在先前的範例中,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的指令上,多加使用者帳號與密碼即可

吔!又寫完了,又可以去玩鋼彈大亂鬥了!