分类 wifidog源码 下的文章

wifidog标准流程描述

一 认证流程描述
  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/2014/12/12/wifidog%E6%B5%81%E7%A8%8B.html 整理编辑,转载请注明出处

WifiDog 认证原理和流程

WifiDOG是一个热点系统,包含了认证服务器和客户端两部分组成,认证原理大体说下:

General Flow Description:
一般流程描述:
①The client does his initial request, as if he was already connected, (e.g.: http://www.google.ca)
客户端发出初始化请求,比如访问 www.google.ca 这个站点

②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
网关的防火墙规则将这个请求重定向到本地网关的端口上。当做完这个工作,网关提供一个HTTP重定向回复,包含了Gateway的ID,Gateway的FQDN以及其他的信息。

③The Client does his request to the Auth Server as specified by the Gateway, see Login Protocol
用户向认证服务器发出认证请求

http://auth_server/login?
gw_id=[GatewayID, default: "default"]
gw_address=[GatewayAddress, internal IP of router]
gw_port=[GatewayPort, port that wifidog Gateway is listening on]
url=[user requested url]

④The Gateway replies with a (potentially custom) splash (login) page
网关返回一个(可以是自定义的)splash(也称作“登录”)页面

⑤The Client provides his identification informations (username and password)
用户提供他的凭据信息,比如用户名和密码

⑥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]
成功认证的话,客户端将会被重定向到网关的自己的web页面上,并且带有一个 认证凭据(一个一次性的token),内容比如
http://GatewayIP:GatewayPort/wifidog/auth?token=[auth token]

⑦The Client then connects to the Gateway and thus gives it his token
用户就是用获取到的凭据访问网关

⑧The Gateway requests validation of the token from the Auth Server, see Client Protocol【见登录心跳】
网关去认证服务器询问token的有效性

⑨The Auth Server confirms the token
认证服务器确认token的有效性

①①The Gateway then sends a redirect to the Client to obtain the Success Page from the Auth Server, redirects to http://auth_server/portal/
网关发送重定向给客户端,以从认证服务器上获取 成功提示页面,重定向到 http://auth_server/portal/ 这个位置

①②The Auth Server notifies the Client that his request was successful
认证服务器通知客户请求成功,可以上网了

1123.png

这个是原理图,大概需要11步才能完成认证,这种token认证方式有个好处,可以第三方认证后然后到wifidog的认证服务器取一个有效的token给用户,实现与第三方认证的整合。

本文章由 http://www.wifidog.pro/2014/12/12/39.html 整理编辑,转载请注明出处

wifidog和authpuppy配合使用,实现wifi认证

通过在路由器系统(比如dd-wrt,openwrt)安装wifi看门狗程序wifidog,在认证服务器安装authpuppy wifi认证程序,可以实现类似在商场、机场、银行经常看到的免费wifi使之前看到的认证页面或产品、企业广告、介绍页面的功能。(wifidog 和 authpuppy 都是开源项目)

wifidog
官网地址:http://dev.wifidog.org/

authpuppy
官网地址:http://www.authpuppy.org

openwrt安装wifidog方法
http://wiki.openwrt.org/doc/howto/wireless.hotspot.wifidog?s[]=wifidog

linux安装authpuppy方法
可以看下这篇文章:
http://blog.csdn.net/sdvch/article/details/16350763
也可以在官网查看http://www.authpuppy.org

如果自己没有服务器搭建authpuppy认证程序,但是路由器是dd-wrt,openwrt系统可以通过安装wificat实现无线认证功能,可参考如下两篇文章
dd-wrt 安装wificat方法:http://bbs.pcpop.com/forum.php?mod=viewthread&tid=10646786
openwrt安装wificat方法:http://www.right.com.cn/forum/thread-141807-1-1.html

本文章由 http://www.wifidog.pro/2014/12/12/wifidog%E5%92%8Cauthpuppy.html 整理编辑,转载请注明出处

ddwrt+wifidog搭建热点认证系统(无线路由器web认证)

先来说说什么是热点认证系统,如果你有用过酒店或者机场的wifi,当你连上网络后试图去浏览某些页面的时候就会被从定向到一个特定的页面要求你登录啊什么的,是的,这就是热点登陆系统,可能也可以叫做wifi login portal。不管是什么,如果你理解了这概念,或者觉得有用,那么我们就来实际的搭建一下吧。

准备工作:
1、一个支持ddwrt的路由器,关于如何得到这个路由器以及那些是兼容的请上ddwrt官网自行搜索,个人比较推荐的是上淘宝买个二手的linksys wrt54g的路由器,一般这样的一个机器都有被改造过,扩充flash容量以便能安装完全版的ddwrt固件。所以下文将不会讲如何安装ddwrt固件,其实我只是自己也没安装过罢了。。

2、internet环境(其实不连应该也没什么关系,不过我没测试过)。首先有一点很重要的是,如果你把路由器只接个lan口当做交换机来用的话是无法成功的,所以这里我们必须在wan口上插根网线,并在设置里配置好二级路由,开启dhcp服务。

3、一台机器,通过lan口连接路由器,用来配置鉴权服务器。

准备完成后,举例配置如下:
ddwrt路由器 ip:192.168.11.1
鉴权服务器ip:192.168.11.128
就可以进行配置了。先配置服务器吧,wifidog官网上说使用了新的验证服务器authpuppy,于是就下载之,之后如果你想省去麻烦的php和mysql等等配置工作,建议直接使用xampp。
然后把解压的文件夹authpuppy扔到xampp默认的访问目录htdocs下,修改authpuppy部分目录的权限(详细的参看官网设置,这里就整个目录777了)。

开打浏览器输入localhost/authpuppy/web/后来到安装页面,根据要求安装就是了,这部应该没什么问题,需要你建立数据库就按照要求建个就是了,用户名则可以随便分配。
安装完之后用新建的管理员账号登陆,选择manage node,新建一个node,注意这里有个GW ID的设置,随便设个,但必须在路由器端的wifidog设置中也使用这个id,不然无法进行认证。到此为止鉴权服务器的简单功能应该算是配置完成了,之后加入复杂的功能等等则可以通过官网提供的插件和api或者自己看源码理解,可能我下次会说到,这里就不提了。

接着是路由器的配置,点开"服务"标签,二级标签选"热点",在里面会看到被禁用的狗狗,开启之,依下设置(图片稍后奉上):
网管ID,就是前面服务器设的那个GW ID
服务器名,随意了
下面一些默认不要动
鉴权服务器主机名,安装authpuppy服务器的ip地址192.168.11.128
SSL服务禁用
端口,还是看你服务器的配置,默认是80。
鉴权服务器路径,/authpuppy/web/
填写完成后按应用就可以了。这时候你可以登录到路由器上的wifidog看看dog是否正常工作。在浏览器中输入:192.168.11.1:2060/wifidog/status
状态如图(继续稍后。。。)就说明成功了,不过此时还有一部非常重要的事要做,那就是进入路由器管理菜单,重启路由器,之前一直由于这个原因搞了我很久。

测试,随便找个带wifi的电脑或手机,连上我们设的热点后,任意访问个页面,此时如果页面成功跳转了那么便大功告成,没有的话检测看看原因,一般如果wifidog状态正常的话是不会出问题的。
over~其实配置起来还是蛮简单的,关键还是在于后续的开发和管理上面。

本文章由 http://www.wifidog.pro/2014/12/12/ddwrt-wifidog%E8%AE%A4%E8%AF%81%E7%83%AD%E7%82%B9.html 整理编辑,转载请注明出处