1.插件
Username 認證使用配置檔案預設用戶端使用者名與密碼,支援通過 HTTP API 管理認證資料。
Username 認證不依賴外部資料源,使用上足夠簡單輕量。使用這種認證方式前需要開啟插件,我們可以在Dashboard裡找到這個插件并開啟。

2.哈希方法
Username 認證預設使用 sha256 進行密碼哈希加密,可在 etc/plugins/emqx_auth_username.conf 中更改:
# etc/plugins/emqx_auth_username.conf
## Value: plain | md5 | sha | sha256
auth.user.password_hash = sha256
配置哈希方法後,新增的預設認證資料與通過 HTTP API 添加的認證資料将以哈希密文存儲在 EMQ X 内置資料庫中。
3.預設認證資料
可以通過配置檔案預設認證資料,編輯配置檔案: etc/plugins/emqx_auth_username.conf
插件啟動時将讀取預設認證資料并加載到 EMQ X 内置資料庫中,節點上的認證資料會在此階段同步至叢集中。
預設認證資料在配置檔案中使用了明文密碼,出于安全性與可維護性考慮應當避免使用該功能
4.HTTP API 管理認證資料
EMQ X提供了對應的HTTP API用以維護内置資料源中的認證資訊,我們可以添加/檢視/取消/更改認證資料我們通過VSCode來通路EMQ X的API /auth_username 完成認證資料的相關操作
1:檢視已有認證使用者資料: GET api/v4/auth_username
@hostname = 192.168.0.176
@port=18083
@contentType=application/json
@userName=admin
@password=public
#############檢視已有使用者認證資料##############
GET http://{{hostname}}:{{port}}/api/v4/auth_username HTTP/1.1
Content-Type: {{contentType}}
Authorization: Basic {{userName}}:{{password}}
傳回結果
HTTP/1.1 200 OK
connection: close
content-length: 20
content-type: application/json
date: Thu, 04 Jun 2020 08:02:39 GMT
server: Cowboy
{
"data": [],
"code": 0
}
2:添加認證資料API 定義: POST api/v4/auth_username{ "username": "emqx_u", "password": "emqx_p"}
########添加使用者認證資料##############
POST http://{{hostname}}:{{port}}/api/v4/auth_username HTTP/1.1
Authorization: Basic {{userName}}:{{password}}
"username": "user",
"password": "123456"
}
使用 POST 請求添加 username 為 user password 為 123456 的認證資訊,傳回資訊中 code = 0 即為成
功。
3.更改指定使用者名的密碼API 定義: PUT api/v4/auth_username/${username}{ "password": "emqx_new_p"}
指定使用者名,傳遞新密碼進行更改,再次連接配接時需要使用新密碼進行連接配接:
###########更改指定使用者名的密碼#############
PUT http://{{hostname}}:{{port}}/api/v4/auth_username/user HTTP/1.1
"password": "user"
4:檢視指定使用者名資訊API 定義: GET api/v4/auth_username/${username}指定使用者名,檢視相關使用者名、密碼資訊,注意此處傳回的密碼是使用配置檔案指定哈希方式加密後的密碼:
###########檢視指定使用者名資訊#############
GET http://{{hostname}}:{{port}}/api/v4/auth_username/user HTTP/1.1
5:删除認證資料API 定義: DELETE api/v4/auth_username/${username}
###########删除指定的使用者資訊#############
DELETE http://{{hostname}}:{{port}}/api/v4/auth_username/user HTTP/1.1
5.MQTTX用戶端驗證
使用mqtt用戶端工具驗證使用username連接配接登入的功能。從 https://github.com/emqx/MQTTX 這個位址下載下傳對應作業系統的mqtt用戶端工具。
(1)建立連接配接,配置如下
在對應的輸入框内輸入username和password,clientId這裡目前可以随便輸入(因為基于clientId的認證功能還沒有啟用),之後點連接配接,連接配接成功。使用者名和密碼如果輸入錯誤的話是連接配接不成功的。
(2)再次建立愛你一個用戶端連接配接,可作為消息的訂閱者,上一個連接配接作為釋出者如下
(3)訂閱者添加訂閱
(4)上一個用戶端連接配接作為消息的釋出者來進行消息的釋出
(5)檢視訂閱者是否接受到消息