wifidog用php实现验证流程

1.首先简单说说wifidog认证的过程

客户端首次连接到wifi后,浏览器请求将会被重定向到:

login/?gw_address=%s&gw_port=%d&gw_id=%s&url=%s

验证通过后,客户端被重定向到网关,url格式如下:

http://网关地址:网关端口/wifidog/auth?token=

wifidong会启动一个线程周期性地报告每一个用户的状态信息,并通过如下地址发送给认证

服务器:

auth_server:/auth/?stage=

ip=

mac=

token=

incoming=

outgoing=

认证服务器根据该状态信息决定是否允许该用户继续连接,并回复网关,回复格式为:Auth:状态码,

如:Auth:1

常用状态码:

0:AUTH_DENIED,表示拒绝

1:AUTH_ALLOWED,验证通过

验证通过后,将重定向到如下地址:

portal/?gw_id=%s

wifidog的ping协议

wifidog通过ping协议将当前状态信息发送给认证服务器,发送地址为:

http://auth_sever/ping/?

gw_id=%s

sys_uptime=%lu

sys_memfree=%u

sys_load=%.2f

wifidog_uptime=%lu

认证服务器须返回一个“Pong”作为回应。

具体php实现代码如下

public function auth()
    {
    	//响应客户端的定时认证,可在此处做各种统计、计费等等
    	/*
    		wifidog 会通过这个接口传递连接客户端的信息,然后根据返回,对客户端做开通、断开等处理,具体返回值可以看wifidog的文档
    	wifidog主要提交如下参数
    	1.ip
    	2. mac
    	3. token(login页面下发的token)
    	4.incoming 下载流量
    	5.outgoing 上传流量
    	6.stage  认证阶段,就两种 login 和 counters
    	*/

    	$stage = $_GET[‘stage‘] == ‘counters‘?‘counters‘:‘login‘;
    	if($stage == ‘login‘)
    	{
    		//XXXX跳过login 阶段的处理XXXX不能随便跳过的
    		//默认返回 允许
    		echo "Auth: 1";
    	}
    	else if($stage == ‘counters‘)
    	{

    		//做一个简单的流量判断验证,下载流量超值时,返回下线通知,否则保持在线
    		if(!empty($_GET[‘incoming‘]) and $_GET[‘incoming‘] > 10000000)
    		{
    			echo "Auth: 0";
    		}else{
    			echo "Auth: 1\n";
    		}
    	}
    	else
    		echo "Auth: 0"; //其他情况都返回拒绝

    	/*
    		返回值:主要有这两种就够了
    	0 - 拒绝
    	1 - 放行

    	官方文档如下
    	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 (用户邮件验证时,向用户开放email)
    	-1 - AUTH_ERROR - An error occurred during the validation process
    	*/
    }
    public function portal()
    {
    	/*
    	 wifidog 带过来的参数 如下
    	1. gw_id
    	*/
    	//重定到指定网站 或者 显示splash广告页面
    	redirect(‘http://www.baidu.com‘, ‘location‘, 302);

    }
    public function ping()
    {
    	//url请求 "gw_id=$gw_id&sys_uptime=$sys_uptime&sys_memfree=$sys_memfree&sys_load=$sys_load&wifidog_uptime=$wifidog_uptime";
    	//log_message($this->config->item(‘MY_log_threshold‘), __CLASS__.‘:‘.__FUNCTION__.‘:‘.debug_printarray($_GET));

    	//判断各种参数是否为空
    	if( !(isset($_GET[‘gw_id‘]) and isset($_GET[‘sys_uptime‘]) and isset($_GET[‘sys_memfree‘]) and isset($_GET[‘sys_load‘]) and isset($_GET[‘wifidog_uptime‘]) ) )
    	{
    		echo ‘{"error":"2"}‘;
    		return;
    	}
    	//添加心跳日志处理功能
    	/*
    		此处可获取 wififog提供的 如下参数
    	1.gw_id  来自wifidog 配置文件中,用来区分不同的路由设备
    	2.sys_uptime 路由器的系统启动时间
    	3.sys_memfree 系统内存使用百分比
    	4.wifidog_uptime wifidog持续运行时间(这个数据经常会有问题)
    	*/

    	//返回值
    	echo ‘Pong‘;
    }
    /**
     * wifidog 的gw_message 接口,信息提示页面
     */
    function gw_message()
    {
    	if (isset($_REQUEST["message"])) {
    		switch ($_REQUEST["message"]) {
    			case ‘failed_validation‘:
    				//auth的stage为login时,被服务器返回AUTH_VALIDATION_FAILED时,来到该处处理
    				//认证失败,请重新认证
    				break;
    			case ‘denied‘:
    				//auth的stage为login时,被服务器返回AUTH_DENIED时,来到该处处理
    				//认证被拒
    				break;
    			case ‘activate‘:
    				//auth的stage为login时,被服务器返回AUTH_VALIDATION时,来到该处处理
    				//待激活
    				break;
    			default:
    				break;
    		}
    	}else{
    		//不回显任何信息
    	}
    }

wifidog用php实现验证流程,布布扣,bubuko.com

时间: 05-08

wifidog用php实现验证流程的相关文章

Web用户的身份验证及WebApi权限验证流程的设计和实现

前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个功能复杂的业务应用系统,通过角色授权来控制用户访问,本文通过Form认证,Mvc的Controller基类及Action的权限验证来实现Web系统登录,Mvc前端权限校验以及WebApi服务端的访问校验功能. 1. Web Form认证介绍 Web应用的访问方式因为是基于浏览器的Http地址请求,所以需要验证用户身份的合法性.目前常见的方式是Form认证,其处理逻辑描述如下:1. 用户首先要在登录页面输入用户名和密码,然

WebApi权限验证流程的设计和实现

前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个功能复杂的业务应用系统,通过角色授权来控制用户访问,本文通过Form认证,Mvc的Controller基类及Action的权限验证来实现Web系统登录,Mvc前端权限校验以及WebApi服务端的访问校验功能. 1. Web Form认证介绍 Web应用的访问方式因为是基于浏览器的Http地址请求,所以需要验证用户身份的合法性.目前常见的方式是Form认证,其处理逻辑描述如下:1. 用户首先要在登录页面输入用户名和密码,然

Python 爬虫入门(四)—— 验证码上篇(主要讲述验证码验证流程,不含破解验证码)

本篇主要讲述验证码的验证流程,包括如何验证码的实现.如何获取验证码.识别验证码(这篇是人来识别,机器识别放在下篇).发送验证码.同样以一个例子来说明.目标网址 http://icp.alexa.cn/index.php(查询域名备案信息) 1.验证码的实现: 简单的说,验证码就是一张图片,图片上有字符串.网站是如何实现的呢?有WEB基础的人可能会知道,每个浏览器基本都有cookie,作为这次回话的唯一标示.每次访问网站,浏览器都会把这个cookie发送给服务器.验证码就是和这个cookie绑定到

[置顶] Web用户的身份验证及WebApi权限验证流程的设计和实现

转发 http://blog.csdn.net/besley/article/details/8516894 [置顶] Web用户的身份验证及WebApi权限验证流程的设计和实现 2013-01-18 13:19 22755人阅读 评论(19) 收藏 举报  分类: Asp.net Web技术(9)  WebAPI(3)  MVC(6)  版权声明:本文为博主原创文章,未经博主允许不得转载. 前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个功能复杂的业务应用系统,通过

【.NET Core项目实战-统一认证平台】第十二章 授权篇-深入理解JWT生成及验证流程

原文:[.NET Core项目实战-统一认证平台]第十二章 授权篇-深入理解JWT生成及验证流程 [.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章介绍了基于Ids4密码授权模式,从使用场景.原理分析.自定义帐户体系集成完整的介绍了密码授权模式的内容,并最后给出了三个思考问题,本篇就针对第一个思考问题详细的讲解下Ids4是如何生成access_token的,如何验证access_token的有效性,最后我们使用.net webapi来实现一个外部接口(本来想用JAVA来实现的,

佰新网络科技广州分公司手机短信验证流程设计

1 验证是验证什么?为什么要验证 验证所存在的需求场景,就类似于人之间打招呼的场景.首先打招呼前,需要让机器明白即将作出一系列指令的主 体,即要打招呼的是"人"而不是"机器",所以其验证 目的之一是:对操作者是否为人的身份验证. 当机器知道了这就是要打招呼的对象后,为了满足整个行 为的顺利完成,得需要让机器知道"你"是否有打招呼的 意愿,即验证目的之二是:对操作者是否本人意愿操作的 验证.所有的验证实质都是在满足以上的目的. 02 流程可视化设计

登录验证流程及token处理

一.登录流程 1.先验证验证码,通过以后调用登录接口验证密码,否则返回登录页. 2.验证密码,如果相等返回result,否则返回空的result. 3.在controller中获取result成功验证token,否则返回登录. 4.验证token是否在cookie中,如果在则登录成功,否则生成token放到sso cache中(一般用redis或者memcached中) 然后在放入cookie登录成功. 下面是登录的流程图: 二.过滤器验证 1.首先在cookie中获取token验证token是

Web用户的身份验证及WebApi权限验证流程的设计和实现(尾)

5. WebApi 服务端代码示例 5.1 控制器基类ApiControllerBase [csharp] view plaincopy /// /// Controller的基类,用于实现适合业务场景的基础功能 /// /// [BasicAuthentication] public abstract class ApiControllerBase : ApiController { } 5.2 权限属性BaseAuthenticationAttribute [csharp] view pla

restful API 带token验证流程 示意图