某局点客户使用portal型微信认证第一次认证失败

一、问题现象

某客户局点使用IMC服务器部署终端微信认证后发现,第一次打开微信客户端点击立即连接网络时,提示“网络连接失败”,点击重新连接后问题解决,如下图所示。

1.jpg

二、原因分析

(1)通过查看IMC的前台日志,可以看到类似于“portal认证失败,状态码为7,设备拒绝请求”。

2017-03-30 13:57:13 [INFO ] [http-nio-80-exec-14] [com.imc.weixin.rs.func.RestApiMgrImpl::offlineByIp]

根据framedIp调用下线接口结束
2017-03-30 13:57:13 [INFO ] [http-nio-80-exec-14] [com.imc.weixin.rs.func.RestApiMgrImpl::queryGuestUserIfExist]

根据openid查询访客,如果不存在则增加
2017-03-30 13:57:13 [INFO ] [http-nio-80-exec-14] [com.imc.weixin.rs.func.RestApiMgrImpl::queryUserPassword]

查询用户密码开始
2017-03-30 13:57:13 [INFO ] [http-nio-80-exec-14] [com.imc.weixin.rs.func.RestApiMgrImpl::queryUserPassword]

查询用户密码成功,密码为1
2017-03-30 13:57:13 [INFO ] [http-nio-80-exec-14] [com.imc.weixin.rs.func.RestApiMgrImpl::getGuestServiceSuffix]

查询访客服务后缀开始
2017-03-30 13:57:13 [INFO ] [http-nio-80-exec-14] [com.imc.weixin.rs.func.RestApiMgrImpl::getGuestServiceSuffix]

查询访客服务后缀成功。访客服务无后缀
2017-03-3013:57:13[INFO][http-nio-80-exec-14][com.imc.weixin.controller.PortalAuthController::authentificate]

portal认证失败。状态码为:7,设备拒绝请求
2017-03-30 13:57:13 [INFO ] [http-nio-80-exec-14] [com.imc.weixin.rs.func.RestApiMgrImpl::queryGuestUser]

查询访客信息开始
2017-03-30 13:57:17 [INFO ] [http-nio-80-exec-17] [com.imc.weixin.rs.func.RestApiMgrImpl::offlineByIp]

根据mac调用下线接口开始
2017-03-30 13:57:17 [INFO ] [http-nio-80-exec-17] [com.imc.weixin.rs.func.RestApiMgrImpl::offlineByIp]

根据framedIp调用下线接口失败,响应状态码为410
2017-03-30 13:57:17 [INFO ] [http-nio-80-exec-17] [com.imc.weixin.rs.func.RestApiMgrImpl::queryGuestUserIfExist]

根据openid查询访客,如果不存在则增加
2017-03-30 13:57:17 [INFO ] [http-nio-80-exec-17] [com.imc.weixin.rs.func.RestApiMgrImpl::queryUserPassword]

查询用户密码开始
2017-03-30 13:57:17 [INFO ] [http-nio-80-exec-17] [com.imc.weixin.rs.func.RestApiMgrImpl::queryUserPassword]

查询用户密码成功,密码为1
2017-03-30 13:57:17 [INFO ] [http-nio-80-exec-17] [com.imc.weixin.rs.func.RestApiMgrImpl::getGuestServiceSuffix]

查询访客服务后缀开始

(2)在portal型微信认证中,打开portal重定向页面中点击微信连WIFI按钮,会唤起微信客户端的同时,使用配置公众号时提供的临时账号进行portal单点登录上线实现全网放通,在微信客户端发起微信认证流程时,访客的账户会将临时账户踢下线,但是部分设备对于这种快速下线又上线的请求,无法进行及时的处理,导致这一问题。

三、解决办法:

在IMC安装路径下的D:\Program Files\iMC\client\conf的weixinConWifi.properties文件,使用文档编辑器,打开文件后将logout.enable=1项修改为0,1表示IMC会主动踢临时用户下线,修改为0后IMC不主动踢临时用户下线。

2.jpg

同时打开IMC安装目录下的IMC/portal/conf/portal.properties文件,将logout.wait.time=1000修改为3000,1000表示等待时间为1s,将等待时间延长可以减小设备的压力。需要注意的是直接安装的E0406版本中包含该参数,从旧版本升级的版本配置文件中没有这一参数,可以直接在文件末尾添加后保存。

3.jpg

修改两个文件后,重启jserver进程。修改生效。

四、建议与总结

(1)不是直接安装的7.2E0406的版本,portal.properties文件中不包含logout.wait.time=1000这一项,需要手工填写并修改;

(2)修改之后需要重启jserver进程使修改生效;

(3)该问题不是必现,取决于设备处理机制。


2017年11月