标签 wifidog认证 wifidog安装 wifidog原理 wifidog分析 wifidog配置 wifidog流程 wifidog服务器 wifidog-ddwrt wifidog openwrt 下的文章

wifidog认证流程及相关重要函数调用

1、The client does his initial request, as if he was already connected, (e.g.: http://www.google.ca)
2、The Gateway’s firewall rules mangle the request to redirect it to a local port on the Gateway. When that’s the done, the Gateway provides an HTTP Redirect reply that contains the Gateway ID, Gateway FQDN and other informations
3、The Client does his request to the Auth Server as specified by the Gateway, see Login Protocol
4、The Gateway replies with a (potentially custom) splash (login) page
5、The Client provides his identification informations (username and password)
6、Upon succesful authentication, the client gets an HTTP Redirect to the Gateway’s own web server with his authentication proof (a one-time token), http://GatewayIP:GatewayPort/wifidog/auth?token=[auth token]
7、The Client then connects to the Gateway and thus gives it his token
8、The Gateway requests validation of the token from the Auth Server, see Client Protocol
9、The Auth Server confirms the token
10、The Gateway then sends a redirect to the Client to obtain the Success Page from the Auth Server, redirects to http://auth_server/portal/
12、The Auth Server notifies the Client that his request was successful

代码:

http_callback_404:
将未认证的请求重定向到Auth Server的登录界面:login页面

http_callback_auth:
客户端登陆成功后,Auth Server将客户端重定向到Gateway,形式如下:http://GatewayIP:GatewayPort/wifidog/auth?token=[auth token]

authenticate_client:
Gateway将拿到的token传给Auth Server,验证客户端,如果客户端被允许,将客户端重定向到Auth Server的portal界面Firewall.c中包含了对iptables相关的操作

本文章由 http://www.wifidog.pro/2015/02/13/wifidog%E8%AE%A4%E8%AF%81%E6%B5%81%E7%A8%8B.html 整理编辑,转载请注明出处

wifidog 工作接口及其特点

portal认证方式有多重,我们选择了十分普遍额开源项目wifidog,支持openwrt,用户群体大,资料较完善,中文资料多。
主要优点:

  1. 开源(https://github.com/wifidog github,上提供了源码及基于php的认证网关源码)
  2. 国内使用wifidog的情况比较普遍,二次开发更容易。

(总结:低成本,易上手。)

目前也存在一定的缺点

  1. 通过实际抓包发现,心跳包不断的检查用户在线情况,网关服务器性能开销较大。
  2. 基于iptables,协议繁琐。
  3. 隐私问题,url直接传递含隐私的信息。

工作机制

/ping 心跳接口

"GET /ping/?gw_id=网关id&sys_uptime=1183&sys_memfree=105884&sys_load=0.14&wifidog_uptime=1169 HTTP/1.0"

/login 新用户认证跳转页面

GET /login/?gw_address=111&gw_port=111&gw_id=111&mac=88:72:0d:f2:88:29&url=url HTTP/1.1

/auth 用户检测

/auth/?stage=counters&ip=192.168.10.81&mac=88:72:0d:f2:a8:29&token=85ea71f2484b2c52fee&incoming=5638570&outgoing=722214&gw_id=111 HTTP/1.0

本文章由 http://www.wifidog.pro/2015/02/13/wifidog%E7%AE%80%E4%BB%8B-2.html 整理编辑,转载请注明出处

wifidog如何判断用户在不在线?

wifidog是如何判断用户在不在线的?
首先说明一下,用户下线的机制,是在用户经过一定时间没上网时,wifidog 线程将用户踢下线,再次上网需要重新认证。这个时间就是在wifidog.conf里面设置的CheckInterval * timeout的时间,单位为秒。

那么wifidog怎么判断用户在不在线?这个概念和上面提到的不同,这里wifidog 使用的是arp_get 通过IP获取mac,如果获取不到就不会把这个客户端信息添加到wifidog的client 链表里。详见http_callback_auth函数实现。

本文章由 http://www.wifidog.pro/2015/02/13/wifidog%E5%88%A4%E6%96%AD%E7%94%A8%E6%88%B7%E5%9C%A8%E4%B8%8D%E5%9C%A8%E7%BA%BF.html 整理编辑,转载请注明出处