jetlinks平台Mqtt设备接入认证问题

参考官方接入教程:设备接入教程 | JetLinks 物联网基础平台

演示协议:GitHub - jetlinks/demo-protocol: Jetlinks 自定义消息协议解析: 演示协议

密码生成:JetLinks官方协议MQTT用户名密码生成工具

一套下来最烦人的时mqtt连不上。用生成的密码也不行。

关键在于文档没有说明生成器用的密码从哪里来。

正确的菜单在 设备管理-产品-选一个设备-查看,mqtt认证配置下的secureId和secureKey

jetlinks平台Mqtt设备接入认证问题_第1张图片

如果没配置会怎么样呢,官方协议代码写的有坑,没有考虑不配置的情况。空串和空对象比较永远不成立。

简单改一下吧

 官方认证器JetLinksAuthenticator类修改 ,判断的时候将secureId加上空串比较

 if (requestSecureId.equals(secureId) && digest.equals(password)) {
                                return AuthenticationResponse.success(deviceOperation.getDeviceId());
                            } else {
                                return AuthenticationResponse.error(401, "密钥错误"+"secureId="+secureId+"secureKey="+secureKey+"digest="+digest+"username="+username+"password="+password);
                            }

改成

 if (requestSecureId.equals(secureId+"") && digest.equals(password+"")) {
                                return AuthenticationResponse.success(deviceOperation.getDeviceId());
                            } else {
                                return AuthenticationResponse.error(401, "密钥错误"+"secureId="+secureId+"secureKey="+secureKey+"digest="+digest+"username="+username+"password="+password);
                            }

生成这里填上两个null字符串,这样就能连上mqtt了。

jetlinks平台Mqtt设备接入认证问题_第2张图片

 那么设置了secureId和secureKey是否就没有坑了呢,也是有的,保存一遍之后还需要点应用配置才能生效。

jetlinks平台Mqtt设备接入认证问题_第3张图片

你可能感兴趣的:(分享学习,大数据)