一、應(yīng)用場(chǎng)景
一套完整的PORTAL認(rèn)證系統(tǒng)需要有AC,AP,PORTAL,RADIUS等很多的設(shè)備或者服務(wù)單元。本身部署起來就有一定的復(fù)雜性。如果要是牽扯到與現(xiàn)有的系統(tǒng)進(jìn)行對(duì)接,那么就勢(shì)必需要進(jìn)行復(fù)雜的二次開發(fā)。
最常見的做法就是,RADIUS要支持更多的數(shù)據(jù)源或者數(shù)據(jù)格式。這種開發(fā)不但要修改RADIUS接口還要調(diào)整SQL,相當(dāng)?shù)穆闊?br />
因此,一種可以和現(xiàn)有數(shù)據(jù)庫(kù)進(jìn)行快速對(duì)接的方案就應(yīng)運(yùn)而生了。這就是HTTP認(rèn)證。
二、技術(shù)方案
下圖就是一個(gè)典型的NAS設(shè)備對(duì)接認(rèn)證源的拓?fù)鋱D。
[attach]322497[/attach]
高度靈活的HTTP認(rèn)證
NAS設(shè)備可以對(duì)接的常用數(shù)據(jù)源包括,RADIUS,LDAP/AD等。其協(xié)議都是固定的不可更改的。而HTTP認(rèn)證方式的最大特點(diǎn)就是使用了標(biāo)準(zhǔn)的HTTP協(xié)議。NAS作為HTTP客戶端把認(rèn)證信息通過GET的方式提交給WEB服務(wù)器,WEB服務(wù)器通過查詢數(shù)據(jù)庫(kù),并且經(jīng)過業(yè)務(wù)邏輯運(yùn)算后返回標(biāo)準(zhǔn)的JSON。而WEB程序的開發(fā)是非常容易的。
三、技術(shù)優(yōu)勢(shì)
讓NAC支持HTTP認(rèn)證后,在兼容已有數(shù)據(jù)庫(kù),例如,CRM,等系統(tǒng)方面具備了快速交付的能力。這對(duì)于很多沒有RADIUS系統(tǒng)的企業(yè),可以直接對(duì)接到HR系統(tǒng)中去進(jìn)行管理。
四、HTTP服務(wù)器端的PHP測(cè)試代碼
<?php
$pdo = new PDO('mysql:host=localhost;dbname=nac','root','root');
//時(shí)間策略
$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){//抓取數(shù)據(jù)
$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;
}
五、參考文獻(xiàn)
NAC的HTTP認(rèn)證功能介紹
掃碼關(guān)注5G通信官方公眾號(hào),免費(fèi)領(lǐng)取以下5G精品資料
1、回復(fù)“YD5GAI”免費(fèi)領(lǐng)取《中國(guó)移動(dòng):5G網(wǎng)絡(luò)AI應(yīng)用典型場(chǎng)景技術(shù)解決方案白皮書》
2、回復(fù)“5G6G”免費(fèi)領(lǐng)取《5G_6G毫米波測(cè)試技術(shù)白皮書-2022_03-21》
3、回復(fù)“YD6G”免費(fèi)領(lǐng)取《中國(guó)移動(dòng):6G至簡(jiǎn)無線接入網(wǎng)白皮書》
4、回復(fù)“LTBPS”免費(fèi)領(lǐng)取《《中國(guó)聯(lián)通5G終端白皮書》》
5、回復(fù)“ZGDX”免費(fèi)領(lǐng)取《中國(guó)電信5G NTN技術(shù)白皮書》
6、回復(fù)“TXSB”免費(fèi)領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解》
7、回復(fù)“YDSL”免費(fèi)領(lǐng)取《中國(guó)移動(dòng)算力并網(wǎng)白皮書》
8、回復(fù)“5GX3”免費(fèi)領(lǐng)取《 R16 23501-g60 5G的系統(tǒng)架構(gòu)1》
|