wifidog+authpuppy认证过程主要是上线和保活下线两个过程。
一 上线
认证过程可以分为十步 :
1 客户端发送初始请求,如http://www.baidu.com
2 网关防火墙把请求重定向到网关的本地端口,然后网关提供一个HTTP重定向以响应客户端的请求。如:
Captured 19.168.1.156 requesting [http%3A//www.baidu.com/] and re-directing them to login page
3 客户端用重定向的网址向服务器端发送请求。
4 服务器端向客户端返回带认证输入表单的页面。
5 客户端向服务器端发送账号和密码
为什么在连接中没有用户名和密码?
POST方式
6 返回认证结果,如果认证成功,则客户端获得指向网关web服务器的地址重定向。
http://19.168.1.10:2060/wifidog/auth?token=1a92bcc18f40472b645ee003587394ef88b49ae5
7 客户端用步骤6的重定向地址访问网关服务器
8 认证token的值有效性
这里的outgoing和incoming信息是根据iptables统计出的,由于尚未完成认证,没有上网行为,故现在流量还是0。
9 返回认证结果至网关服务器
10 如果认证成功AUTH_ALLOWED,则客户端获得指向web服务器的地址重定向
https://192.168.36.79:443/authpuppy/web/portal/?gw_id=bdcom
11 客户端用步骤6的重定向地址访问网关服务器
12 服务器端向客户端返回结果,在实际实验中是显示www.baidu.com。
那么www.baidu.com网址信息是保存在什么地方的呢?
通过查看代码,是在用户登录成功后保存在web服务器上的。
二、保活和下线
更新流量计数
https://192.168.36.79:443/authpuppy/web/auth/?stage=counters&ip=19.168.1.210&mac=38:bc:1a:97:03:42&token=1a92bcc18f40472b645ee003587394ef88&incoming=108267&outgoing=66670&gw_id=bdcom
实际上服务器端并没有向AP端发送auth=1报文,只是在服务器端把该用户置为合法的。
# User is allowed to stay connected
$parent->auth = 1;
用户下线
用户下线有两种情况:
1.客户端直接发出请求
2.用户超时,超时的定义是:超过一定时间没有流量交互。
Ping是网关向服务器发出的,主要用于检测服务器的可连通性,向服务器告知网关的运行信息。
https://192.168.36.79:443/authpuppy/web/ping/?gw_id=bdcom&sys_uptime=87548&sys_memfree=38316&sys_load=0.00&wifidog_uptime=13440