天天看點

Tomcat上部署Wifidog認證伺服器

前言:這個伺服器的搭建隻是為了了解wifidog與認證伺服器的具體互動過程,在搭建商用認證服時,需要有所改進。 關于wifidog認證的流程,下面幾篇部落格介紹的很不錯: http://blog.csdn.net/huithe/article/details/27195903

一.了解認證互動的資料 搭建wifidog authpuppy伺服器,通過抓包,了解了認證過程資料的互動,以下是我搭建wifidog authpuppy參考的貼文 http://www.right.com.cn/forum/thread-196859-1-1.html

為了下面的解釋說明更清楚,在上面的部落格中截了下圖:

Tomcat上部署Wifidog認證伺服器
Tomcat上部署Wifidog認證伺服器

關于1、2、3步是在路由器和用戶端之間完成的,這裡就不介紹了, 下面是第4、5、6、7步資料包分析:(用戶端抓包:172.16.16.68)

Tomcat上部署Wifidog認證伺服器

第4步,截取的資料包如下,是一個get請求,附帶的資訊有網關ip,wifidog的監聽端口2060,wifidog的gw_id,用戶端mac,用戶端請求的url; 第5步,認證伺服器給用戶端回複的資訊是一個認證頁面, 在這個認證頁面中,是一個post送出的表格; 第6步,使用者送出賬号和密碼,伺服器收到post消息,檢查使用者的資訊是否合理,合理則将至重定向到網關,也就是第7步; 第7步,authpuppy認證服認證通過,回複用戶端一個重定向位址,包含token資訊; 第8步,是用戶端與路由器的互動,主要是比較token資訊,第11步(黑色),路由器回複給用戶端一個重定向到認證服,用戶端收到重定向,進入第11步(紅色); 第11步(紅色),是用戶端對認證服的一個get請求,認證服重定向一個url,本人重定向的url是:http://tooki.leptonnet.com/login.html。 綜上,認證服需要提供,login和portal接口

下面是在伺服器上的抓包,與上面抓包不是同一時間,下面的包是路由器與認證服的互動資訊,是以伺服器上需要有auth和ping的接口,關于字段的說明: 1.get  auth的stage字段,有至少3種狀态,在stage為logout時,回複auth: 0即可,在其它狀态回複auth: 1; 2.get ping,回複Pong即可;

Tomcat上部署Wifidog認證伺服器

下面是認證失敗,認證服沒有處理好将第6步重定向到了路由器,但此後路由器在對認證服發auth時,認證服由于沒有對應的token記錄,回複auth: 0,使得路由器在第11步(黑色)的時候重定向了下面的Get請求,是以,認證服需要一個gw_message.php的應答接口 

Tomcat上部署Wifidog認證伺服器

二.認證服的實作 綜合上面所有包的資訊:認證服上需要有以下5個接口: 使用者登入接口:                       1.login;    登入認證成功重定向的接口:    2.portal;     路由器認證使用者是否存在:       3.auth;     路由器檢測認證服是否存在:    4.ping;     路由器發現使用者不合理:          5.gw_message.php;

以下是實作的代碼: https://gitee.com/cocos_yang/wifidogRenZhengFuWuQi.git

注: 需要自己搭建mysql資料庫,建兩個表,userInfo(此表中隻有兩個字段username和password)和tokenMac(此表也隻有兩個字段mac和token);截圖如下

Tomcat上部署Wifidog認證伺服器
Tomcat上部署Wifidog認證伺服器

下面是認證界面登入界面和認證成功後重定向的界面:

Tomcat上部署Wifidog認證伺服器

 圖一:認證界面

Tomcat上部署Wifidog認證伺服器

 圖二:認證成功後,重定向的界面

三.路由器中wifidog.conf的配置資訊:

GatewayID yangyang


GatewayInterface br-lan


GatewayAddress 172.16.8.1


HtmlMessageFile /etc/wifidog-msg.html


AuthServer {
        Hostname                 1XX.XXX.2XX.1XX
        SSLAvailable             no
        HTTPPort                 80
        Path                     /wifidog/
}


CheckInterval 60


ClientTimeout 5


FirewallRuleSet validating-users {
    FirewallRule allow to 0.0.0.0/0
}


FirewallRuleSet known-users {
    FirewallRule allow to 0.0.0.0/0
}


FirewallRuleSet unknown-users {
    FirewallRule allow udp port 53
    FirewallRule allow tcp port 53
    FirewallRule allow udp port 67
    FirewallRule allow tcp port 67
}


FirewallRuleSet locked-users {
    FirewallRule block to 0.0.0.0/0
}
           

注:在wifidog中不要删掉關于firewall的配置,删除了會導緻認證通過後無法上網。 

繼續閱讀