EMQX開啟HTTP連接授權驗證模式

參考資料

官方網站 HTTP認證插件 HTTP協議

配置HTTP認證插件

使用vi或者vim編輯/etc/emqx/plugins/emqx_auth_http.conf文件。分別對連接認證、管理員認證、發布訂閱認證進行配置。配置一共分為四項,HTTP接口地址、請求方式、內容類型、請求參數。接口地址指的就是一個HTTP的地址。請求方式通常我們使用GET或者POST,建議使用POST。內容類型通常使用x-www-form-urlencoded。請求參數這個是最重要的,這裡需要把我們判斷授權的所有需要​​的內容都包含在內,所有的參數詳細說明可以在參考資料中查看。下面我們的示例中我們API的服務地址是統一入口,通過參數中的action來指定實際調用接口,當然我們也可以從url中來區分,大家可以根據自己的使用情況調整。服務端的代碼本文就不進行講述了,因為跟業務邏輯是緊密結合的,我們要做的就是經過邏輯判斷後返回結果給EMQX,如果我們要通過認證就正常返回HTTP的200狀態碼,如果不通過就返回HTTP的403狀態碼。

            auth.http.auth_req = http://127.0.0.1:80/
auth.http.auth_req.method = post
auth.http.auth_req.content_type = x-www-form-urlencoded
auth.http.auth_req.params = client_id=%c,username=%u,password=%P,action=emqx_auth:auth_req
auth.http.super_req = http://127.0.0.1:80/
auth.http.super_req.method = post
auth.http.super_req.content_type = x-www-form-urlencoded
auth.http.super_req.params = client_id=%c,username=%u,action=emqx_auth:super_req
auth.http.acl_req = http://127.0.0.1:80/
auth.http.acl_req.method = post
auth.http.acl_req.content_type = x-www-form-urlencoded
auth.http.acl_req.params = access=%A,username=%u,client_id=%c,ip=%a,topic=%t,action=emqx_auth:acl_req
        

加載HTTP驗證插件

            emqx_ctl plugins load emqx_auth_http
        

驗證結果

經過上述操作後,我們需要使用MQTT客戶端來進行連接,我們嘗試使用正常客戶端、管理客戶端連接服務端查看結果是否符合預期。然後發布訂閱主題看看權限管控是否符合我們的要求。如果發現異常,我們可以調試服務端的代碼直到一切正常。