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