一、应用场景
一套完整的PORTAL认证系统需要有AC,AP,PORTAL,RADIUS等很多的设备或者服务单元。本身部署起来就有一定的复杂性。如果要是牵扯到与现有的系统进行对接,那么就势必需要进行复杂的二次开发。
最常见的做法就是,RADIUS要支持更多的数据源或者数据格式。这种开发不但要修改RADIUS接口还要调整SQL,相当的麻烦。
因此,一种可以和现有数据库进行快速对接的方案就应运而生了。这就是HTTP认证。
二、技术方案
下图就是一个典型的NAS设备对接认证源的拓扑图。
[attach]322497[/attach]
高度灵活的HTTP认证
NAS设备可以对接的常用数据源包括,RADIUS,LDAP/AD等。其协议都是固定的不可更改的。而HTTP认证方式的最大特点就是使用了标准的HTTP协议。NAS作为HTTP客户端把认证信息通过GET的方式提交给WEB服务器,WEB服务器通过查询数据库,并且经过业务逻辑运算后返回标准的JSON。而WEB程序的开发是非常容易的。
三、技术优势
让NAC支持HTTP认证后,在兼容已有数据库,例如,CRM,等系统方面具备了快速交付的能力。这对于很多没有RADIUS系统的企业,可以直接对接到HR系统中去进行管理。
四、HTTP服务器端的PHP测试代码
<?php
$pdo = new PDO('mysql:host=localhost;dbname=nac','root','root');
//时间策略
$pdo->query( "SET NAMES UTF8" );
$username = $_GET['username'];
$password = $_GET['userpasswd'];
$method = $_GET['method'];
$userip = $_GET['userip'];
$usermac = $_GET['usermac'];
$nasip = $_GET['nasip'];
if($method==1){
$sql = "select * from user where username='".$username."'";
$rs = $pdo->query($sql,2);
$user = $rs->fetch();
if(!empty($user['id'])){
$array = array('Code'=>0,'User'=>array('Username'=>$username,'Userip'=>$userip,'Usermac'=>$usermac,'Sessiontime'=>$user['sessiontime'],'in'=>$user['in'],'out'=>$user['out']));
}
else{
$array = array('Code'=>1,'User'=>array('Username'=>$username,'Userip'=>$userip,'Usermac'=>$usermac));
}
$pdo=null;
}
else{
$sql = "select * from user where username='".$username."' and password='".$password."'";
$rs = $pdo->query($sql,2);
$user = $rs->fetch();
if(!empty($user['id'])){
$array = array('Code'=>0,'User'=>array('Username'=>$username,'Userip'=>$userip,'Usermac'=>$usermac,'Sessiontime'=>$user['sessiontime'],'in'=>$user['in'],'out'=>$user['out']));
}
else{
$array = array('Code'=>1,'User'=>array('Username'=>$username,'Userip'=>$userip,'Usermac'=>$usermac));
}
$pdo=null;
}
$data['url'] = 'http://'.$nasip;
$data['data'] = array('info'=>json_encode($array));
$data['method'] = 'post';
echo json_encode($array);
getAPI($data);
function getAPI($data){//抓取数据
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $data["url"]);
curl_setopt ( $ch, CURLOPT_POST, 1 );
curl_setopt ( $ch, CURLOPT_HEADER, 0 );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_TIMEOUT,3);
if($data["method"]=="post"){
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data['data'] );
}
$getSysinfo = curl_exec ( $ch );
curl_close ( $ch );
$return=json_decode($getSysinfo,true);
return $return;
}
五、参考文献
NAC的HTTP认证功能介绍
扫码关注5G通信官方公众号,免费领取以下5G精品资料
1、回复“ZGDX”免费领取《中国电信5G NTN技术白皮书》
2、回复“TXSB”免费领取《通信设备安装工程施工工艺图解》
3、回复“YDSL”免费领取《中国移动算力并网白皮书》
4、回复“5GX3”免费领取《 R16 23501-g60 5G的系统架构1》
5、回复“iot6”免费领取《【8月30号登载】物联网创新技术与产业应用蓝皮书——物联网感知技术及系统应用》
6、回复“6G31”免费领取《基于云网融合的6G关键技术白皮书》
7、回复“IM6G”免费领取《6G典型场景和关键能力白皮书》
8、回复“SPN2”免费领取《中国移动SPN2.0技术白皮书》
|