一 认证流程描述
i. Wifidog 运行之后建立一系列的防火墙规则,主要规则起到如下作用:
1.阻断所有内网到外网的访问。
2.开通内网到外网的 dns 访问。
3.开通内网到认证服务器以及域名白名单的访问。
4.对内网到外网 80 端口的访问转向到 wifidog 自己的 http 服务(2060 端口)。
ii. 手机、pc 连接上来后,app 或者系统(安卓、ios 会自己连接到各自的服务器上来验证网络的连通性)会发起对外网的访问请求,dns 请求会被放过,然后对应的 80 端口的访问会被指向 2060 的 http 服务,其他的请求都会被拦截。
iii. Wifidog 的 http 接到 web 请求后,基本上都会被指向 404 页面,404 页面会给客户端一个重定向返回(302),要求客户端重定向访问认证服务器的 login 页面,附加参数 gw_id、gw_address、gw_port、url。
iv. 手机、pc 客户端加载、显示认证服务器的 login 页面,用户根据页面内容做相关的认证操作(qq 登录、微博登录、用户名密码登录、手机短信登录等多种登录方式) ,原则只有一个认证不成功就仍然让用户停留在认证服务器继续认证操作,认证成功给客户端一个 302 重定向返回,根据 login 接口提交上来的参数 gw_address、gw_port 跳转套 wifidog web 服务的/wifidog/auth 页面上,附带 token 和 url 参数。
v. Wifidog 的 web 服务收到手机、pc 客户端的/wifidog/auth 请求后,会主动对认证服务器的 auth 接口发起一个验证请求, 附带参数 ip、 mac、 token、 stage=loginvi. 认证服务器的 auth 接口收到 wifidog 的请求, 要根据内部逻辑返回是否允许通过的应答 :
Auth: 0 拒绝
Auth: 1 允许
vii. Wifidog 接收到验证结果后,如果拒绝访问,就会返回 302 给客户端,重定向到认证服务器的 gw_message 接口,附带 message=denied 参数,客户端的上网访问仍然会回到第二步骤;如果允许访问,则改动防火墙规则,开通改客户端的上网(至此客户端已经能够正常上网) ,然后返回 302 重点向给客户端,重定向到认证服务器的 portal 接口,附带参数 gw_id。
viii. 认证服务器的的 portal 接口根据业务流成显示广告业或者做其他的跳转ix. 整个认证流程完成。
二 ping 心跳流程描述
i. ping 接口 wifidog 检测认证服务器访问是否正常、并向认证服务器提交 wifidog的运行状态。
ii. 定时 ping 认证服务器。
iii. 提交的参数 gw_id、sys_uptime、sys_memfree、wifidog_uptime。
三 auth 心跳流程描述
i. 和 ping 一样的频率定期请求认证服务器,并且有多少已认证客户端就发多少请求。
ii. 用来向认证服务器提交客户端的状态以及执行认证服务的验证结果。
iii. 提交的参数有:ip、mac、token、incoming、outgoing 、stage=counters。
iv. 如果服务器返回拒绝,则 wifidog 改动防火墙规则,关闭该客户端的上网。
本文章由 http://www.wifidog.pro/2015/01/20/wifidog%E6%B5%81%E7%A8%8B-2.html 整理编辑,转载请注明出处