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客户端来进行连接,我们尝试使用正常客户端、管理客户端连接服务端查看结果是否符合预期。然后发布订阅主题看看权限管控是否符合我们的要求。如果发现异常,我们可以调试服务端的代码直到一切正常。