EMQTT服务器使用HTTP做用户认证问题
2017-05-09 18:43
357 查看
今天在做使用EMQTT服务器打开HTTP做用户认证这个测试的时候,遇到了几个问题。
1,认证API如何写
认证不需要返回值,是根据HTTP请求的状态码做为判断的依据。200为成功;其它为失败,我这里使用401。
代码示意如下:
当然还可以写的更好一些,封装一些异常类来抛出错误状态。这里仅仅示意。
然后按照官方文档里介绍的方法配置http api。具体看文档即可。
2,出现的异常
然后在我做完上述的事情之后,发现这个api并不能真正起到验证用户的作用,用户名密码及时验证不通过,也还是可以连接上emqtt服务器。
经过排查发现是emqtt一个配置的问题。
要把
mqtt.allow_anonymous = true
修改为false
改完之后就可以了,这里应该是个bug。我测试的版本是2.2,之前的版本没有这个问题。
1,认证API如何写
认证不需要返回值,是根据HTTP请求的状态码做为判断的依据。200为成功;其它为失败,我这里使用401。
代码示意如下:
@RestController @RequestMapping("/mqtt") public class MqttUserCheckController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @RequestMapping(value = "/auth", method = RequestMethod.POST) public void checkUser(String clientid, String username, String password, HttpServletResponse response) { logger.info("普通用户;clientid:" + clientid + ";username:" + username + ";password:" + password); if (checkUser(clientid, username, password)) { response.setStatus(200); } else { response.setStatus(401); } } }
当然还可以写的更好一些,封装一些异常类来抛出错误状态。这里仅仅示意。
然后按照官方文档里介绍的方法配置http api。具体看文档即可。
2,出现的异常
然后在我做完上述的事情之后,发现这个api并不能真正起到验证用户的作用,用户名密码及时验证不通过,也还是可以连接上emqtt服务器。
经过排查发现是emqtt一个配置的问题。
要把
mqtt.allow_anonymous = true
修改为false
改完之后就可以了,这里应该是个bug。我测试的版本是2.2,之前的版本没有这个问题。
相关文章推荐
- 局域网共享资源路径更改无法登陆问题(不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接)解决
- ssh 使用新法:公网(合法 ip)用户访问内网(私有 ip)服务器(http,ftp,sshd,cvs...),内网的朋友不妨一看。
- apache 服务器禁止http方法 解决appscan 使用 HTTP 动词篡改的认证旁路漏洞
- android客户端通过Get方式提交参数给服务器,使用URL和HttpURLConnection实现,以及乱码问题解决
- mongodb3.0.5的用户权限认证和使用可视化工具登录的一系列问题
- 使用angularjs的$http.post异步提交数据时,服务器接收不了的问题
- 解决”不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接“问题
- ssh 使用新法:公网(合法 ip)用户访问内网(私有 ip)服务器(http,ftp,sshd,cvs...),
- Vsftp服务器搭建--虚拟用户使用MySQL 认证
- 使用angularjs的$http.post异步提交数据时,服务器接收不了的问题
- ssh 使用新法公网(合法 ip)用户访问内网(私有 ip)服务器(http,ftp,sshd,cvs...),内网的朋友不妨一看[zt]
- Sliverlight使用HTTP POST服务器出现的问题,求高手解答
- win7问题解决,凭据管理器和无法访问,不允许一个用户使用一个以上用户名与服务器或共享资源进行多重连接。
- 使用shiro框架进行用户登录认证报错(HTTP Status 500 - Authentication failed for token submission )解决
- 解决无法使用http访问安装好nginx和ftp的图片服务器的问题
- android客户端通过Get方式提交参数给服务器,使用URL和HttpURLConnection实现,以及乱码问题解决
- wifidog 认证服务器如何授权和使用用户配置文件
- mysql用户认证协议更换(mysql使用问题)
- g4e常见问题#1 解决Git在Windows上使用http/https无法认证的问题