天天看點

Username認證

1.插件

  Username 認證使用配置檔案預設用戶端使用者名與密碼,支援通過 HTTP API 管理認證資料。

  Username 認證不依賴外部資料源,使用上足夠簡單輕量。使用這種認證方式前需要開啟插件,我們可以在Dashboard裡找到這個插件并開啟。

  

Username認證

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

Username認證

  插件啟動時将讀取預設認證資料并加載到 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認證

    在對應的輸入框内輸入username和password,clientId這裡目前可以随便輸入(因為基于clientId的認證功能還沒有啟用),之後點連接配接,連接配接成功。使用者名和密碼如果輸入錯誤的話是連接配接不成功的。 

  (2)再次建立愛你一個用戶端連接配接,可作為消息的訂閱者,上一個連接配接作為釋出者如下

     

Username認證

  (3)訂閱者添加訂閱

Username認證

   (4)上一個用戶端連接配接作為消息的釋出者來進行消息的釋出

Username認證

   (5)檢視訂閱者是否接受到消息

繼續閱讀