[企业路由器]自定义远程portal web认证

560 阅读4分钟

自定义&定制化远程portal认证对与程序员来说是挺陌生的一个东西,是和路由器这种硬件设备打交道,但是身为程序员的我接到了这种需求只能默认哀叹,搞软件的我间接搞了硬件,这算不算iot呢?

应用背景

为了满足广告推送,微信认证等需求,商场、酒店等使用Portal认证功能时需配合第三方认证系统,包括提供Portal认证页面的WEB服务器、认证服务器等系列设备。

其实需要做认证登录直接使用厂商的定制化模板就好了,但是呢我接到的需求是根据UI制作的界面进行开发,这就不能使用厂商的模板了,需要提供一个web界面并且要部署在服务器上,因为路由器需要重定向到这个外网能访问的地址。

本文介绍外部WEB服务器与TL-ER6520G(这是TP-LINK的路由设备型号)认证接口对接的相关介绍。

流程规范

image.png

                                         Portal认证流程图        

具体我就不在这里描述了,给你们提供一个TP-LINK的参考文档,简单来说就是连上热点后,路由器就会弹出一个认证框,帮你重定向到自己部署的url地址所打开的页面,此时的url路径会拼接上一些认证数据,先保存下来。这个页面可以做你想做的东西,你可以做短信认证,账号密码认证,又或者微信认证、qq认证等等,最后只需要提交先前保存的认证数据和配置的username和password到路由器的ip上即可上网。

所存在的一些难点和坑

你部署的url最好是http协议的,因为厂商说只支持拦截http的网址,虽然说能够重定向到你的页面,但是最后提交认证数据时,你会发现路由器的ip地址是http协议,你的却是https,此时可能会发生两种情况,第一种情况是跨域问题,第二种情况是会默认篡改路由器ip地址协议,变成https(大概是因为浏览器不支持混合请求)此时路由器接收不到就导致不能上网,假如你的服务器是https的,那么还有一个办法就是买一台新的服务器搭配http即可,在提交认证时跳到这个http的服务器上面,由这台服务器进行一个认证信息提交。问题就解决了,我真TM是个天才!

配置路由设备也是一个非常难顶的事情,毕竟咱也不是干这个的,所以最好叫厂商的技术人员远程帮你配置好,不然一步一个坑。

我一开始做的需求是需要人脸认证登录,这一开始我想着这个应该挺简单的,要么用腾讯阿里的第三方人脸认证,要么自己自定义拍照,一开始是准备用第三方的认证,结果领导要我用公司的算法组的东西,这时候就需要我提供拍照功能,还要求我自定义拍照取景框,好家伙我找了几天资料都找不到合理的方案,直接放弃了,改成单纯调用系统摄像头算了。当我开发完在wifi设备测试的时候,你会发现调用摄像头在webView是唤醒不了的(还记得外面肯德基wifi连接时是会自动弹出一个认证框的吧,这并不是浏览器噢),需要在浏览器端,但是问题又来了,怎么在webView跳到浏览器呢?ios和android都是有兼容性问题的,我花了九牛二虎之力才明白安卓的WebVIew有很严重的兼容性问题,几乎不同版本不同型号兼容性都不一样,安卓手机有些能唤起浏览器有些无法唤起,而苹果还好,能统一唤起。所以我只能跟产品提出改成账号密码登录了......