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
- EMQX Cloud 更新:新增 Redis 和 JWT 外部認證授權MQCloudRedisJWT
- 通過詢問-響應身份認證提高桌面登入安全
- EMQX_AUTH_HTTP 認證外掛使用指南MQHTTP
- 【Serverless】Unity快速整合認證服務實現郵件登入ServerUnity
- EMQX Newsletter 2022-05|v5.0 釋出 2 個 rc 版本、雲服務新增外部認證與資料整合方式MQ
- EMQX Newsletter 2022-05|v5.0 釋出2個 rc 版本、雲服務新增外部認證與資料整合方式MQ
- springboot + shiro 實現登入認證和許可權控制Spring Boot
- 通過HTTP Header控制快取HTTPHeader快取
- 精講RestTemplate第9篇-如何通過HTTP Basic Auth認證RESTHTTP
- passport API 認證 -- 多表登入PassportAPI
- 認證授權:一鍵登入的背後過程
- 通過selenium突破極驗驗證實現登入
- ElasticSearch 通過nginx做HTTP驗證ElasticsearchNginxHTTP
- Flask Session 登入認證模組FlaskSession
- JWT登入認證-專案BotBattleJWTBAT
- Redis使用認證密碼登入Redis密碼
- Windows下IIS部署自建CA證書進行雙向認證的過程Windows
- 重新認識Java微服務架構-認證服務Java微服務架構
- OceanBase 資訊科技服務管理體系透過 ISO20000 認證和 ITSS 認證
- Http基本認證HTTP
- vue通過vue-router攔截實現登入驗證Vue
- 實戰模擬│JWT 登入認證JWT
- JWT實現登入認證例項JWT
- HTTP認證之基本認證——Basic(一)HTTP
- HTTP認證之基本認證——Basic(二)HTTP
- HTTP認證之摘要認證——Digest(一)HTTP
- jmeter通過cookies來登入JMeterCookie
- jwt 如何實現一個服務認證了另一個服務也可以認證JWT
- 自建rtmp服務推流
- 基於MVVM架構的遊戲App如何整合華為遊戲服務(一)——登入認證MVVM架構遊戲APP
- 認證系統之登入認證系統的進階使用 (二)
- SpringBoot 整合 Shiro 密碼登入與郵件驗證碼登入(多 Realm 認證)Spring Boot密碼
- http authorization 基本認證HTTP
- openstack 啟動認證服務錯誤
- 騰訊WeTest通過TMMi 3級認證
- TiDB Cloud 通過 GDPR 認證丨成為全球可信賴的資料庫雲服務供應商TiDBCloud資料庫
- 引導過程與服務控制