摘要:主要作用是路由確認(rèn)認(rèn)證服務(wù)器仍然存活,沒(méi)有死機(jī),另外一個(gè)功能是認(rèn)證服務(wù)器可以收集路由的負(fù)載等的信息。路由器會(huì)定時(shí)訪問(wèn)這個(gè)腳本,腳本必須回復(fù),否則將認(rèn)為認(rèn)證服務(wù)器失效而出錯(cuò)。
路由器上wifidog的設(shè)置
主要設(shè)置鑒權(quán)服務(wù)器主機(jī)名(域名或ip都可以)和加粗鑒權(quán)服務(wù)器路徑
路由器會(huì)請(qǐng)求以下四個(gè)地址:
http://認(rèn)證服務(wù)器/路徑/login
http://認(rèn)證服務(wù)器/路徑/auth
http://認(rèn)證服務(wù)器/路徑/ping
http://認(rèn)證服務(wù)器/路徑/portal
http://認(rèn)證服務(wù)器/路徑/gw_message.php
所以我們需要每個(gè)請(qǐng)求建立一個(gè)文件夾下一個(gè)index.php
預(yù)備知識(shí)客戶端首次連接wifi,瀏覽器請(qǐng)求將被重定向到login并攜帶參數(shù)
login/?gw_address=路由器ip&gw_port=路由器wifidog的端口&gw_id=用戶id&url=被重定向前用戶瀏覽的地址
(2013版本的wifidog參數(shù)多了mac)
而login/index.php需要做的就是驗(yàn)證通過(guò)后再重定向到網(wǎng)關(guān):
http://網(wǎng)關(guān)地址:網(wǎng)關(guān)端口/wifidog/auth?token=
之后wifidog會(huì)啟動(dòng)一個(gè)線程周期性報(bào)告用戶狀態(tài):
/auth?stage=&ip=&mac=&token=&incoming=&outgoing=
/auth/index.php則需要返回是否讓該用戶繼續(xù)上網(wǎng),回復(fù)格式:Auth:狀態(tài)碼(0:拒絕, 1:驗(yàn)證通過(guò))
驗(yàn)證成功后,路由器將請(qǐng)求/portal/?gw_id=%s
在/portal/index.php就可以寫(xiě)重定向到第一次請(qǐng)求的url參數(shù)或者重定向到自定義網(wǎng)址了
/ping/index.php的作用就是告訴路由器認(rèn)證服務(wù)器還沒(méi)有崩
/gw_message/index.php作用是當(dāng)認(rèn)證過(guò)程出現(xiàn)錯(cuò)誤的時(shí)候,想用戶顯示錯(cuò)誤信息
我們將完成用戶用賬號(hào)密碼方式認(rèn)證
1.首次重定向:/login/index.php
query("set names "utf8""); $result = $db->query("SELECT * FROM user WHERE username="{$username}" AND password="{$password}""); if($result && $result->num_rows != 0){ //數(shù)據(jù)庫(kù)驗(yàn)證成功 $token = ""; $pattern="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ"; for($i=0;$i<32;$i++) $token .= $pattern[ rand(0,35) ]; //把token放到數(shù)據(jù)庫(kù),用于后續(xù)驗(yàn)證(auth/index.php) $time = time(); $sql = "UPDATE user SET token="{$token}",logintime="{$time}""; $db->query($sql); $db->close(); //登陸成功,跳轉(zhuǎn)到路由網(wǎng)管指定的頁(yè)面. $url = "http://{$parseUrl["gw_address"]}:{$parseUrl["gw_port"]}/wifidog/auth?token={$token}"; header("Location: ".$url); }else{ //認(rèn)證失敗 //直接重定向本頁(yè) 請(qǐng)求變成get $url="http://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; header("Location: ".$url); } }else{ //get請(qǐng)求 //一個(gè)簡(jiǎn)單的表單頁(yè)面 $html = <<< EODEOD; echo $html; } 2.用戶認(rèn)證協(xié)議:portal login
/auth/?stage=%s&ip=%s&mac=%s&token=%s&incoming=%s&outgoing=%s
參數(shù)解釋?zhuān)?br>stage: 認(rèn)證階段,就logoin和counters兩種
token: login頁(yè)面下發(fā)的token
incoming: 下載流量
outgoing: 上傳流量
/auth/index.php
query("set names "utf8""); $token = $parseUrl["token"]; $sql = "SELECT * FROM user WHERE token="{$token}""; $result = $db->query($sql); if($result && $result->num_rows != 0){ //token匹配,驗(yàn)證通過(guò) echo "Auth:1"; }else{ echo "Auth:0"; }3.Ping協(xié)議
/ping/?gw_id=%s&sys_uptime=%lu&sys_memfree=%u&sys_load=%.2f&wifidog_uptime=%lu
wifidog會(huì)向認(rèn)證服務(wù)器發(fā)送一些信息,來(lái)報(bào)告wifidog現(xiàn)在的情況,這些信息是通過(guò)Http協(xié)議發(fā)送的,如上的鏈接所示,參數(shù)大概如字面意思,沒(méi)仔細(xì)研究過(guò),而作為認(rèn)證服務(wù)器,auth_server應(yīng)回應(yīng)一個(gè)"Pong"。
主要作用是路由確認(rèn)認(rèn)證服務(wù)器仍然存活,沒(méi)有死機(jī),另外一個(gè)功能是認(rèn)證服務(wù)器可以收集路由的負(fù)載等的信息。路由器會(huì)定時(shí)訪問(wèn)這個(gè)腳本,腳本必須回復(fù)Pong,否則將認(rèn)為認(rèn)證服務(wù)器失效而出錯(cuò)。
/ping/index.php
4.認(rèn)證成功后的跳轉(zhuǎn)portal/?gw_id=%s
在認(rèn)證成功后,wifidog會(huì)將用戶重定向至該頁(yè)面。
/portal/index.php
5.若驗(yàn)證失敗,則會(huì)根據(jù)失敗原因跳轉(zhuǎn)至如下頁(yè)面gw_message.php?message=denied
gw_message.php?message=activate
gw_message.php?message=failed_validation
/gw_message.php
總結(jié)wifidog的認(rèn)證流程是:
用戶連上wifi,發(fā)起一個(gè)訪問(wèn)網(wǎng)站的請(qǐng)求,如:segmentfault.com
網(wǎng)關(guān)根據(jù)防火墻規(guī)則,將請(qǐng)求重定向本地(路由器的ip)的wifidog端口
wifidog重定向到認(rèn)證服務(wù)器的認(rèn)證頁(yè)面
認(rèn)證服務(wù)器返回登錄頁(yè)面讓用戶填寫(xiě)
用戶填寫(xiě)后請(qǐng)求認(rèn)證
認(rèn)證服務(wù)器根據(jù)用戶提供數(shù)據(jù)確定是否符合要求
如果符合要求,認(rèn)證服務(wù)器將用戶重定向路由器網(wǎng)關(guān)并攜帶token
網(wǎng)關(guān)向認(rèn)證服務(wù)器確定用戶信息
如果符合要求,服務(wù)器返回用戶登錄成功的頁(yè)面
用戶正常上網(wǎng)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/21157.html
摘要:服務(wù)端和端分離架構(gòu)下使用進(jìn)行前后臺(tái)用戶各自的認(rèn)證前段時(shí)間大概一年以前寫(xiě)了個(gè)項(xiàng)目使用了前后端代碼分離的架構(gòu),同時(shí)又因?yàn)闃I(yè)務(wù)需要出現(xiàn)了管理端和前臺(tái)商戶端兩套用戶表登陸的需求。 服務(wù)端和web端分離架構(gòu)下使用 passport 進(jìn)行前后臺(tái)用戶各自的認(rèn)證 前段時(shí)間(大概一年以前)寫(xiě)了個(gè)項(xiàng)目使用了前后端代碼分離的架構(gòu),同時(shí)又因?yàn)闃I(yè)務(wù)需要出現(xiàn)了管理端和前臺(tái)商戶端兩套用戶表登陸的需求。 因?yàn)槭褂昧?...
摘要:七夕啦,作為開(kāi)發(fā),妹子沒(méi)得撩就撩下服務(wù)器吧,妹子有得撩的同學(xué)那就左擁妹子右抱服務(wù)器吧,況且妹子是要禮物的,服務(wù)器又不用。下面我們來(lái)看一些常用的情景,我們需要如何打扮自己配置參數(shù)才能正確撩妹正確撩到服務(wù)器。 七夕啦,作為開(kāi)發(fā),妹子沒(méi)得撩就撩下服務(wù)器吧,妹子有得撩的同學(xué)那就左擁妹子右抱服務(wù)器吧,況且妹子是要禮物的,服務(wù)器又不用。好啦,長(zhǎng)話短說(shuō)再長(zhǎng)說(shuō),祭出今天的工具——CURL(Client...
摘要:在我開(kāi)發(fā)之前只看見(jiàn)上海交通大學(xué)完成了自己的二次開(kāi)發(fā),并且接入了自己學(xué)校的統(tǒng)一身份認(rèn)證系統(tǒng),除此之外,南京大學(xué)也打算做這個(gè)東西,然而過(guò)去了兩年,好像還是沒(méi)有完成開(kāi)發(fā)。具體的實(shí)現(xiàn)可以參照上海交通大學(xué)的問(wèn)卷吧系統(tǒng)。 Limesurvey是一個(gè)比較著名的開(kāi)源問(wèn)卷調(diào)查項(xiàng)目,GitHub地址:https://github.com/LimeSurvey/LimeSurvey 但由于種種原因,雖然用搜...
摘要:自建網(wǎng)站對(duì)接微信公眾號(hào)微信公眾號(hào)技術(shù)平常我們有些寫(xiě)各種網(wǎng)站個(gè)人博客系統(tǒng)物流管理系統(tǒng)通信錄管理系統(tǒng)校園二手網(wǎng)站我們都知道只需要租用一個(gè)服務(wù)器再配置一個(gè)備案好的域名就可以在瀏覽器上進(jìn)行訪問(wèn)了不知大家不知大家有沒(méi)有想過(guò)將你搭的網(wǎng)站對(duì)接微信公眾 title: 自建網(wǎng)站對(duì)接微信公眾號(hào)date: 2018-04-12 15:25tags: 微信公眾號(hào), PHP codeigniter cat...
閱讀 1981·2021-11-22 15:33
閱讀 3013·2021-11-18 10:02
閱讀 2624·2021-11-08 13:16
閱讀 1636·2021-10-09 09:57
閱讀 1381·2021-09-30 09:47
閱讀 2016·2019-08-29 13:05
閱讀 3082·2019-08-29 12:46
閱讀 1020·2019-08-29 12:19