项目部署到测试环境后,IoT的第三方连接失败,日志中持续报错
AuthenticationException: Failed to authenticate
初期排除重点集中在配置和代码层面:
-
本地运行正常
-
accessId / accessKey 等关键参数一致
-
打印运行时配置,确认不存在配置覆盖问题
-
SDK 初始化流程正常
进一步验证网络:
- TLS 握手成功
- TCP 连通性正常
- DNS 解析无异常
从表面来看,似乎是认证阶段失败,但认证参数已经确认一致,因此一度怀疑是第三方平台动态分控或者账号问题。
联系了对方的技术支持后,对方表示未启用IP限制,也未发现账号异常。
排查一圈突然惊醒:
项目使用的是美区数据中心,而测试环境部署在腾讯云上海服务器
本地能够运行成功是因为开了代理,实际访问路径是通过海外出口完成的;而服务器直接从国内出口访问美区 MQ,在认证阶段被拒绝,从日志上表现为 AuthenticationException。
本质不是认证参数错误,而是访问路径被区域限制。
结案
仅以此博客告诫自己,工作中万万不能大意,宝贵的一下午会让我记住这个教训