EMQX 登入認證,通過外部自建HTTP服務控制
EMQX 登入認證,通過外部自建HTTP服務控制
官方教程
https://docs.emqx.net/broker/latest/cn/advanced/auth-http.html
啟動emqx_auth_http外掛
修改emqx_auth_http.conf配置檔案
emqx\etc\plugins\emqx_auth_http.conf
我的伺服器是8080的埠,所以我就改了一個埠
##--------------------------------------------------------------------
## Authentication request.
## HTTP URL API path for authentication request
##
## Value: URL
##
## Examples: http://127.0.0.1:8991/mqtt/auth, https://[::1]:8991/mqtt/auth
auth.http.auth_req = http://127.0.0.1:8080/mqtt/auth
## Value: post | get | put
auth.http.auth_req.method = post
## It only works when method=post
## Value: json | x-www-form-urlencoded
auth.http.auth_req.content_type = x-www-form-urlencoded
## Variables:
## - %u: username
## - %c: clientid
## - %a: ipaddress
## - %r: protocol
## - %P: password
## - %p: sockport of server accepted
## - %C: common name of client TLS cert
## - %d: subject of client TLS cert
##
## Value: Params
auth.http.auth_req.params = clientid=%c,username=%u,password=%P
編寫Http Api介面
在controller裡面新增程式碼
@ApiOperation("MQTT 登入認證")
@PostMapping(value="/auth")
public AjaxResult auth(@RequestParam String clientid, @RequestParam String username, @RequestParam String password) {
logger.info("MQTT auth, clientid="+clientid+", username="+username+", password="+password);
//do something
return AjaxResult.success(200);
}
Security配置
在SecurityConfig裡面新增安全訪問的限制,否則會訪問不到
{
"msg": "請求訪問:/mqtt/auth,認證失敗,無法訪問系統資源",
"code": 401
}
新增如下程式碼,有就可以了
.antMatchers("/mqtt/**").hasIpAddress("127.0.0.1")
{
"msg": "操作成功",
"code": 200,
"data": 200
}
MQTTBox測試
在MQTTBox上新建一個MQTT客戶端,連線到我們本地的EMQX,則在我Java伺服器上會列印一條log
11:53:54.045 [http-nio-8080-exec-1] INFO c.r.m.c.MqttController - [auth,45] - MQTT auth, clientid=18b9abb0-e45e-4d2e-bb9e-f619cf49ab6e1602734033938, username=1111, password=1111
相關文章
- EMQX Cloud 更新:外部認證授權MQCloud
- 使用Oracle外部身份認證登入資料庫Oracle資料庫
- EMQX Cloud 更新:新增 Redis 和 JWT 外部認證授權MQCloudRedisJWT
- 在windows通過作業系統認證登入ORACLEWindows作業系統Oracle
- EMQX_AUTH_HTTP 認證外掛使用指南MQHTTP
- 【Serverless】Unity快速整合認證服務實現郵件登入ServerUnity
- 精講RestTemplate第9篇-如何通過HTTP Basic Auth認證RESTHTTP
- EMQX Newsletter 2022-05|v5.0 釋出2個 rc 版本、雲服務新增外部認證與資料整合方式MQ
- EMQX Newsletter 2022-05|v5.0 釋出 2 個 rc 版本、雲服務新增外部認證與資料整合方式MQ
- 使用Node在服務端呼叫HTTP-Basic認證的API服務端HTTPAPI
- Flask Session 登入認證模組FlaskSession
- passport API 認證 -- 多表登入PassportAPI
- 基於MVVM架構的遊戲App如何整合華為遊戲服務(一)——登入認證MVVM架構遊戲APP
- oracle account 外部認證Oracle
- CA認證服務筆記筆記
- 認證授權:一鍵登入的背後過程
- 在windows透過作業系統認證登入ORACLEWindows作業系統Oracle
- 重新認識Java微服務架構-認證服務Java微服務架構
- 通過HTTP Header控制快取HTTPHeader快取
- Redis使用認證密碼登入Redis密碼
- SSH認證免密碼登入密碼
- JWT登入認證-專案BotBattleJWTBAT
- ElasticSearch 通過nginx做HTTP驗證ElasticsearchNginxHTTP
- jwt 如何實現一個服務認證了另一個服務也可以認證JWT
- 通過selenium突破極驗驗證實現登入
- Windows下IIS部署自建CA證書進行雙向認證的過程Windows
- REST服務安全-雙向認證REST
- 微信開發 沒有認證過的服務號怎麼辦?微信提供了測試號(開通了認證過的服務號的功能)...
- Vue之通過http服務開啟build後的專案VueHTTPUI
- Http基本認證HTTP
- 【Http基本認證】HTTP
- springboot + shiro 實現登入認證和許可權控制Spring Boot
- JWT實現登入認證例項JWT
- 實戰模擬│JWT 登入認證JWT
- spring security 自定義認證登入Spring
- HTTP認證之基本認證——Basic(一)HTTP
- HTTP認證之基本認證——Basic(二)HTTP
- vue通過vue-router攔截實現登入驗證Vue