Wifidog协议分析
版本:20090925
1.Flow:
流程描述:
这里把所有和服务器相关的根目录设置成 ‘/’,这个地方可以修改,但服务端也需要相应修改访问目录,这里使用 ‘/'。
如修改成根目录为wifidog,则第二步需要修改成
http://auth_server/wifidog/login/?gw_id=xxx&gw_address=xxx&gw_port=xxx&url=xxx, 这里不做细节讨论
1)客户端浏览器访问www.baidu.com
2)路由器将浏览器请求重定向到auth server:http://auth_server/login/?gw_id=xxx&gw_address=xxx&gw_port=xxx&url=xxx,url 就是访问的www.baidu.com
3)客户端浏览器访问auth server:
http://auth_server/login/?
gw_id=[GatewayID, default: "default", 如果在.conf里不设置,默认是网关的内网mac 地址]
gw_address=[GatewayAddress, 内网的IP],(内网的IP:192.168.1.1)
gw_port=[GatewayPort, wifidog 监听的端口] (默认是2060)
url=[user requested url] (www.baidu.com), 会使用url 编码
4)Auth Server返回一个login页面。
5)客户端浏览器输入用户名和密码登录。如果不需要校验username 和 password,可以直接忽略4-5步进入到第6步, 从网关协议的code里没有找到相关验证login的内容
6)Auth server 重定向客户端的请求到路由器, http://GatewayIP:GatewayPort/wifidog/auth?token=[auth token], token由auth server 生成, 用来检验客户端是否合法登陆(这里目录wifidog 是网关在wifidog目录下建了一个关于auth 访问的回调函数,如果auth server 重定向浏览器时不加这个功能,需要网关协议相应修改,这里使用带wifidog目录的url)
7)客户端带着第6 步的token使用上面的重定向url访问路由器,触发网关协议关于auth文件的访问回调
8)网关在auth文件的回调里,会使用如下url到auth server验证第7 步客户端发过来的token:http://auth_server/auth/?stage=login&ip=xxx&mac=xxx& token=xxx&incoming=xxx&outgoing=xxx&gw_id=xxx
auth_server/auth/?
stage=login //新的客户端认证
ip=
mac=
token=
incoming=
outgoing=
gw_id=
ip/mac/token 是客户端的信息,incoming/outgoing是用户连接计数信息
stage是请求类别,counters/login/logout,表示已认证的保活/新认证用户/超时删除用户
这里路由器会等待auth server的回复auth code做进一步处理,Auth Server返回Auth Code的格式 Auth: 1, Auth后面带空格。
9)Auth Server检查token:
Wifidog 网关处理如下几种Auth code
0 - AUTH_DENIED - User firewall users are deleted and the user removed.
6 - AUTH_VALIDATION_FAILED - User email validation timeout has occured and user/firewall is deleted
1 - AUTH_ALLOWED - User was valid, add firewall rules if not present, 认证允许通过
5 - AUTH_VALIDATION - Permit user access to email to get validation email under default rules
-1 - AUTH_ERROR - An error occurred during the validation process
所以Auth server可以返回如上几种Auth Code
10)对于AUTH_ALLOWED,路由器重定向客户端到 http://auth_server/portal/?gw_id=xxx,表明认证通过, gw_id 还是上面的那个值。
对于AUTH_DENIED, 重定向到http://auth_server/gw_message.php? message= denied
对于AUTH_VALIDATION,重定向到http://auth_server/gw_message.php? message= activate
对于AUTH_VALIDATION_FAILED,重定向到http://auth_server/gw_message.php? message= failed_validation
11)客户端访问http://auth_server/portal/?gw_id=xxx,Auth server 确认客户端请求成功,auth server 将客户端重定向回www.baidu.com, 认证完成。
2.Timeout检查:
路由器会隔一段时间(在wifidog.conf设置)给auth server发个http://auth_server/auth/?stage=counters&ip=xxx&mac=xxx& token=xxx&incoming=xxx&outgoing=xxx&gw_id=xxx,更新每一个客户端的traffic counters,并重新认证之前已经认证通过的客户端。
1)路由器对于timeout的客户端向auth server发送个logout请求包: http://auth_server/auth/?stage=logout&ip=xxx&mac=xxx& token=xxx&incoming=xxx&outgoing=xxx&gw_id=xxx
2)Auth server 的返回码,和stage=login的返回码一样:
0 - AUTH_DENIED - User firewall users are deleted and the user removed.
6 - AUTH_VALIDATION_FAILED - User email validation timeout has occured and user/firewall is deleted
1 - AUTH_ALLOWED - User was valid, add firewall rules if not present, 认证允许通过
5 - AUTH_VALIDATION - Permit user access to email to get validation email under default rules
-1 - AUTH_ERROR - An error occurred during the validation process
- 网关的保活协议:Ping - pong协议,网关和auth server的交互,表明wifidog的网关还活着。http://auth_server/ping/?gw_id=xxx&sys_uptime=xxx&sys_memfree&sys_load=xxx&wifidog_uptime=xxx, 等auth server回复字符串”Pong”。收到Pong路由器并没有做什么,这个可以自定义。
本文章由 http://www.wifidog.pro/2014/12/18/wifidog-%E5%8D%8F%E8%AE%AE%E5%88%86%E6%9E%90.html整理编辑,转载请注明出处