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