本發(fā)明涉及網(wǎng)絡(luò)認證安全領(lǐng)域,特別是涉及一種Portal認證方法和系統(tǒng)。
背景技術(shù):
商業(yè)環(huán)境中,存在著這樣的一種wifi網(wǎng)絡(luò),無線終端接入此wifi網(wǎng)絡(luò)后,并不能直接連接internet網(wǎng)絡(luò)進行上網(wǎng),而是在瀏覽器彈出一張?zhí)囟ǖ木W(wǎng)頁,讓用戶輸入身份驗證信息,然后提交到后臺服務(wù)器,服務(wù)器驗證用戶身份信息無誤后,方可讓用戶訪問internet網(wǎng)絡(luò),這種認證方式即“入口認證”,又名“Portal認證”。無線AP設(shè)備:無線接入點(Access Point),相當(dāng)于無線交換機,它是無線終端使用有線網(wǎng)絡(luò)的接入點,主要用于家庭寬帶、企業(yè)內(nèi)部網(wǎng)絡(luò)部署和商業(yè)環(huán)境中網(wǎng)絡(luò)部署等。Portal認證,也稱為“web入口認證”,當(dāng)用戶的無線終端接入網(wǎng)絡(luò),未認證用戶需要上網(wǎng)時候,首先強制用戶登錄到一個特定的認證網(wǎng)站,然后用戶填寫相關(guān)登錄信息,并發(fā)送到認證服務(wù)器,等到服務(wù)器后臺驗證成功后,放行該用戶,此時該用戶可以使用互聯(lián)網(wǎng)資源。
Portal認證是無線網(wǎng)絡(luò)接入認證的流行技術(shù)之一,當(dāng)用戶接入某一無線網(wǎng)絡(luò)時,會自動彈出Portal頁面,提示用戶輸入賬戶信息,完成接入認證。無線網(wǎng)絡(luò)運營者有時為了方便用戶接入網(wǎng)絡(luò),會臨時記住用戶STA的MAC地址,即其物理地址、硬件地址,下次再次認證時不需要用戶輸入賬戶,直接免認證通過。也有的無線網(wǎng)絡(luò)運營者的為了提高用戶的使用體驗和廣告投發(fā)效率,用戶接入無線時,強制推送廣告,用戶點擊或看完廣告頁面就可直接上網(wǎng),這些優(yōu)化的認證方式確實提高了接入效率和用戶的實際體驗,但也產(chǎn)生了安全風(fēng)險。現(xiàn)有的Portal認證過程先由STA接入無線AP設(shè)備的某一個SSID,無線AP設(shè)備要求STA進行Portal認證,并劫持用戶的第一個HTTP Request上網(wǎng)請求。無線AP設(shè)備響應(yīng)用戶的HTTP Request報文,通過HTTP 302重定向到Portal服務(wù)器URL地址,并帶上STA原有報文中STA的MAC,然后STA獲得無線AP設(shè)備重定向的URL地址和STA的MAC,以此URL和MAC再次向Portal服務(wù)器發(fā)起HTTP Request請求。當(dāng)前方案是用戶在瀏覽器輸入域名(如HTTP://www.sina.com.cn/或者“www.sina.com.cn”),瀏覽器會發(fā)DNS查詢包到DNS服務(wù)器查詢此域名對應(yīng)的IP地址,獲取到后瀏覽器與此IP地址進行TCP三次連接,連接完成后,瀏覽器再發(fā)送HTTP數(shù)據(jù)包到此IP地址請求該網(wǎng)站的主頁信息。
現(xiàn)有技術(shù)的缺點很明顯,當(dāng)用戶直接在瀏覽器輸入一個IP地址,而按照HTTP請求協(xié)議,不會發(fā)送DNS查詢報文,而是直接與該IP地址建立TCP連接。而如果該IP地址沒有被分配給某臺內(nèi)網(wǎng)或者外網(wǎng)任何一臺主機,或者分配了但該主機處于關(guān)機狀態(tài),那么此時TCP連接就會失敗,而TCP連接失敗,后續(xù)的HTTP請求就不會再進行,更不用說Portal認證。
技術(shù)實現(xiàn)要素:
本發(fā)明的提供了一種Portal認證方法和系統(tǒng),其目的在于解決用戶在瀏覽器輸入IP地址后也能重定向到Portal認證頁進行Portal認證的問題。
本發(fā)明提供的技術(shù)方案如下:
一種Portal認證方法,包括步驟:
S100無線終端判斷在Portal認證頁地址欄是否輸入IP地址;若是執(zhí)行步驟S200;否則,執(zhí)行步驟S400;
S200無線AP設(shè)備判斷所述IP地址是否為認證服務(wù)器對應(yīng)的IP地址;若是執(zhí)行步驟S400;否則,執(zhí)行步驟S300;
S300所述無線AP設(shè)備攔截轉(zhuǎn)發(fā)給所述認證服務(wù)器的TCP連接數(shù)據(jù)包,使無線AP設(shè)備與無線終端進行TCP連接;
S400所述無線終端重定向請求Portal認證頁,完成Portal認證。
無線終端設(shè)備打開網(wǎng)頁或其它應(yīng)用程序時,會觸發(fā)發(fā)送上網(wǎng)請求報文,大多時候,用戶都是通過網(wǎng)址導(dǎo)航主頁直接進入,然而若用戶在瀏覽器IP地址,如果該IP地址沒有被分配給某臺內(nèi)網(wǎng)或者外網(wǎng)任何一臺主機,或者分配了但該主機處于關(guān)機狀態(tài),那么此時TCP連接就會失敗,而TCP連接失敗,后續(xù)的HTTP請求就不會再進行,從而導(dǎo)致無線終端認證結(jié)果失敗,無線終端無法通過認證,從而無法獲得上網(wǎng)權(quán)限。這里,通過判斷在Portal認證頁地址欄是否輸入IP地址,并進一步判斷輸入的IP地址是否為認證服務(wù)器對應(yīng)的IP地址,如果輸入的是IP地址且不是認證服務(wù)器對應(yīng)的IP地址,那么無線AP設(shè)備攔截轉(zhuǎn)發(fā)給認證服務(wù)器的TCP連接數(shù)據(jù)包,使無線AP設(shè)備與無線終端進行TCP連接,然后在重定向請求Portal認證頁,完成Portal認證。如果輸入的不是IP地址,也就是說輸入的是域名,那么認證服務(wù)器獲取到該無線終端的上網(wǎng)請求后,便從所述請求報文中解析出該無線終端的MAC地址,然后響應(yīng)無線終端的上網(wǎng)請求,返回給無線終端重定向報文,報文攜帶了重定向的地址和解析出的該無線終端的MAC地址,無線終端根據(jù)此重定向報文,打開Portal認證界面,根據(jù)重定向的地址發(fā)送認證請求報文,完成Portal認證。如果輸入的是IP地址,但該地址是Portal URL對應(yīng)的IP地址,那么無線AP設(shè)備對無線終端發(fā)送到Portal URL對應(yīng)的IP地址不攔截,而是直接放行轉(zhuǎn)發(fā)出去,讓無線終端直接和Portal認證服務(wù)器建立TCP連接。可以避免用戶輸入網(wǎng)絡(luò)不可達的IP地址導(dǎo)致不能Portal認證問題,同時對用戶輸入域名的情況也不產(chǎn)生任何負面影響。在內(nèi)網(wǎng)與外部網(wǎng)絡(luò)擁堵或者網(wǎng)速很慢的情況下,用戶可以根據(jù)預(yù)先知道的URL對應(yīng)的IP地址,直接輸入該IP地址進行Portal認證連接,可以大大加速Portal認證過程。
進一步的,所述步驟S300包括步驟:
S310所述無線AP設(shè)備攔截所述無線終端發(fā)送的SYN握手數(shù)據(jù)包,并構(gòu)造SYN ACK握手數(shù)據(jù)包;
S320所述無線AP設(shè)備發(fā)送所述SYN ACK握手數(shù)據(jù)包至所述無線終端;并丟棄所述SYN握手數(shù)據(jù)包;
S330所述無線終端接收所述SYN ACK握手數(shù)據(jù)包;并發(fā)送ACK握手數(shù)據(jù)包至所述無線AP設(shè)備;
S340所述無線終端發(fā)送HTTP數(shù)據(jù)包至所述無線AP設(shè)備。
本發(fā)明中,無線AP設(shè)備工作于橋模式下,在無線AP設(shè)備的嵌入式linux內(nèi)核中注冊鉤子函數(shù)(又名HOOK函數(shù))直接攔截?zé)o線終端發(fā)來的TCP的SYN數(shù)據(jù)包,即TCP第一次握手數(shù)據(jù)包,然后在鉤子函數(shù)中,直接構(gòu)造TCP第二次握手的報文,即SYN ACK報文,并通過內(nèi)核發(fā)送函數(shù)直接發(fā)送到無線終端,然后將第一次握手的數(shù)據(jù)報文丟棄,此時第一次握手報文不會通過無線AP設(shè)備轉(zhuǎn)發(fā)出去,第二次握手完成后,無線終端收到SYN ACK報文后,會發(fā)送ACK數(shù)據(jù)包進行第三次握手。TCP連接是在無線終端和無線AP設(shè)備之間完成,用時很短,大大提高了連接速率。
進一步的,所述步驟S310包括步驟:
S311所述無線終端發(fā)送所述TCP連接請求數(shù)據(jù)包至所述無線AP設(shè)備;
S312所述無線AP設(shè)備獲取所述無線終端發(fā)送的第一次數(shù)據(jù)包;
S313所述無線AP設(shè)備對所述第一次數(shù)據(jù)包進行解析,得到數(shù)據(jù)報文和字段參數(shù);
S314所述無線AP設(shè)備根據(jù)所述數(shù)據(jù)報文,判斷標(biāo)識位是否符合預(yù)設(shè)判斷條件;若是執(zhí)行步驟S314;
S315獲取的所述第一次數(shù)據(jù)包是所述SYN握手數(shù)據(jù)包;
S316所述無線AP設(shè)備根據(jù)預(yù)設(shè)的攔截指令,攔截所述無線無線AP設(shè)備轉(zhuǎn)發(fā)所述SYN握手數(shù)據(jù)包至認證服務(wù)器;
S317所述無線AP設(shè)備根據(jù)所述字段參數(shù)構(gòu)造SYN ACK握手數(shù)據(jù)包。
本發(fā)明中,在內(nèi)核注冊一個鉤子函數(shù),因為無線AP設(shè)備工作在橋模式下,是對無線AP設(shè)備轉(zhuǎn)發(fā)的數(shù)據(jù)包進行攔截(對發(fā)到無線AP設(shè)備本身的數(shù)據(jù)包不作任何處理),所以HOOK點放在NF_IP_FORWARD,因為TCP第一次連接,TCP報文頭的標(biāo)志位SYN為1,解析從內(nèi)核勾出來的skb_buf數(shù)據(jù)報文,當(dāng)解析出TCP報文頭時候進行判斷,當(dāng)標(biāo)志位滿足“URG=0、ACK=0、PSH=0、RST=0、SYN=1、FIN=0”條件時候,說明此數(shù)據(jù)包為TCP連接第一次握手的數(shù)據(jù)包。將此數(shù)據(jù)包必要的字段解析出來,如源MAC地址、目的MAC地址、源IP地址、目的IP地址等,這次重要的字段參數(shù)為后續(xù)的構(gòu)造SYN ACK包作數(shù)據(jù)準(zhǔn)備,然后根據(jù)這些解析出來的參數(shù)構(gòu)造SYN ACK數(shù)據(jù)包,在內(nèi)核中構(gòu)造SYN ACK數(shù)據(jù)包很容易,這里不一一描述如何構(gòu)造SYN ACK包,這里假設(shè)已經(jīng)構(gòu)造好了該數(shù)據(jù)包,根據(jù)TCP協(xié)議,SYN ACK包是TCP連接第二次握手的數(shù)據(jù)包,所以構(gòu)造好后直接從無線AP設(shè)備內(nèi)核發(fā)送到無線終端,發(fā)送完畢后直接將第一次握手的SYN包在無線AP設(shè)備內(nèi)部丟棄(內(nèi)核代碼NF_DROP),不發(fā)送到無線AP設(shè)備IP地址主機。當(dāng)無線終端收到無線AP設(shè)備發(fā)來的SYN ACK數(shù)據(jù)包,確認無誤后,回復(fù)第三次握手的ACK包,然后發(fā)送HTTP包到無線AP設(shè)備,接下來的流程就和常規(guī)Portal流程一樣,不再描述,但是需要注意的是,Portal URL對應(yīng)的IP地址應(yīng)當(dāng)假裝白名單,也就是說無線終端發(fā)送到Portal URL對應(yīng)的IP地址不攔截,而是直接放行轉(zhuǎn)發(fā)出去,讓無線終端直接和Portal服務(wù)器建立TCP連接。
進一步的,所述字段參數(shù)包括:源MAC地址、目的MAC地址、源IP地址、目的IP地址;所述預(yù)設(shè)判斷條件為標(biāo)識位滿足“URG=0、ACK=0、PSH=0、RST=0、SYN=1、FIN=0”。
進一步的,所述無線AP設(shè)備工作模式為橋接模式;所述無線AP設(shè)備內(nèi)核設(shè)有預(yù)設(shè)的攔截指令。
本發(fā)明中,在無線AP設(shè)備的嵌入式linux內(nèi)核中注冊鉤子函數(shù)或回調(diào)函數(shù),只要能夠?qū)崿F(xiàn)攔截指令即可,對無線AP設(shè)備攔截?zé)o線終端發(fā)來的TCP的SYN數(shù)據(jù)包的方式不限定。
本發(fā)明還提供一種Portal認證系統(tǒng),包括:
無線終端,所述無線終端與無線AP設(shè)備通訊連接;所述無線終端判斷在Portal認證頁地址欄是否輸入IP地址;
無線AP設(shè)備,所述無線AP設(shè)備與認證服務(wù)器通訊連接;所述無線AP設(shè)備判斷所述IP地址是否為所述認證服務(wù)器對應(yīng)的IP地址;
當(dāng)在Portal認證頁地址欄輸入IP地址,并且所述IP地址不是所述認證服務(wù)器對應(yīng)的IP地址攔;所述無線AP設(shè)備攔截轉(zhuǎn)發(fā)給認證服務(wù)器的TCP連接數(shù)據(jù)包;無線AP設(shè)備與無線終端進行TCP連接;
當(dāng)所述無線終端在Portal認證頁地址欄不輸入IP地址;或者,
當(dāng)所述無線終端在Portal認證頁地址欄輸入IP地址,所述IP地址是所述認證服務(wù)器對應(yīng)的IP地址攔,所述無線終端重定向請求Portal認證頁,完成Portal認證。
本發(fā)明中,無線終端判斷在Portal認證頁地址欄是否輸入IP地址,并無線AP設(shè)備判斷所述IP地址是否為所述認證服務(wù)器對應(yīng)的IP地址。如果輸入的是IP地址且不是認證服務(wù)器對應(yīng)的IP地址,那么無線AP設(shè)備攔截轉(zhuǎn)發(fā)給認證服務(wù)器的TCP連接數(shù)據(jù)包,使無線AP設(shè)備與無線終端進行TCP連接,然后在重定向請求Portal認證頁,完成Portal認證。如果輸入的不是IP地址,也就是說輸入的是域名,那么認證服務(wù)器與無線終端進行TCP連接,完成Portal認證。如果輸入的是IP地址,但該地址是Portal URL對應(yīng)的IP地址,那么無線AP設(shè)備對無線終端發(fā)送到Portal URL對應(yīng)的IP地址不攔截,而是直接放行轉(zhuǎn)發(fā)出去,讓無線終端直接和Portal認證服務(wù)器建立TCP連接??梢员苊庥脩糨斎刖W(wǎng)絡(luò)不可達的IP地址導(dǎo)致不能Portal認證問題,同時對用戶輸入域名的情況也不產(chǎn)生任何負面影響。在內(nèi)網(wǎng)與外部網(wǎng)絡(luò)擁堵或者網(wǎng)速很慢的情況下,用戶可以根據(jù)預(yù)先知道的URL對應(yīng)的IP地址,直接輸入該IP地址進行Portal認證連接,可以大大加速Portal認證過程。
進一步的,所述無線AP設(shè)備包括:
判斷模塊,所述判斷模塊與攔截模塊通訊連接;判斷所述IP地址是否為所述認證服務(wù)器對應(yīng)的IP地址;
控制模塊,所述無線AP設(shè)備攔截所述無線終端發(fā)送的SYN握手數(shù)據(jù)包;構(gòu)造SYN ACK握手數(shù)據(jù)包;發(fā)送所述SYN ACK握手數(shù)據(jù)包至所述無線終端;并丟棄所述SYN握手數(shù)據(jù)包;
所述無線終端包括:
發(fā)送模塊,所述發(fā)送模塊與接收模塊通訊連接;發(fā)送所述TCP連接請求數(shù)據(jù)包至所述無線AP設(shè)備;發(fā)送ACK握手數(shù)據(jù)包至所述無線AP設(shè)備;發(fā)送HTTP數(shù)據(jù)包至所述無線AP設(shè)備;
接收模塊,接收所述SYN ACK握手數(shù)據(jù)包。
無線AP設(shè)備工作于橋模式下,在無線AP設(shè)備的嵌入式linux內(nèi)核中注冊鉤子函數(shù)(又名HOOK函數(shù))直接攔截?zé)o線終端發(fā)來的TCP的SYN數(shù)據(jù)包,即TCP第一次握手數(shù)據(jù)包,然后在鉤子函數(shù)中,直接構(gòu)造TCP第二次握手的報文,即SYN ACK報文,并通過內(nèi)核發(fā)送函數(shù)直接發(fā)送到無線終端,然后將第一次握手的數(shù)據(jù)報文丟棄,此時第一次握手報文不會通過無線AP設(shè)備轉(zhuǎn)發(fā)出去,第二次握手完成后,無線終端收到SYN ACK報文后,會發(fā)送ACK數(shù)據(jù)包進行第三次握手。TCP連接是在無線終端和無線AP設(shè)備之間完成,用時很短,大大提高了連接速率。
進一步的,所述控制模塊包括:
獲取子模塊,所述獲取子模塊與解析子模塊通訊連接;獲取所述無線終端發(fā)送的第一次數(shù)據(jù)包;
解析子模塊,所述解析子模塊與判斷子模塊通訊連接;對所述第一次數(shù)據(jù)包進行解析,得到數(shù)據(jù)報文和字段參數(shù);
判斷子模塊,所述判斷子模塊與輸出子模塊通訊連接;根據(jù)所述數(shù)據(jù)報文,判斷標(biāo)識位是否符合預(yù)設(shè)判斷條件;
輸出子模塊,所述輸出子模塊與攔截子模塊通訊連接;輸出獲取的所述第一次數(shù)據(jù)包是所述TCP SYN握手數(shù)據(jù)包;
攔截子模塊,所述攔截子模塊與構(gòu)造子模塊通訊連接;根據(jù)預(yù)設(shè)的攔截指令,攔截所述無線無線AP設(shè)備轉(zhuǎn)發(fā)所述TCP SYN握手數(shù)據(jù)包至認證服務(wù)器;
構(gòu)造子模塊,根據(jù)所述字段參數(shù)構(gòu)造TCP SYN ACK握手數(shù)據(jù)包。
在內(nèi)核注冊一個鉤子函數(shù),因為無線AP設(shè)備工作在橋模式下,是對無線AP設(shè)備轉(zhuǎn)發(fā)的數(shù)據(jù)包進行攔截(對發(fā)到無線AP設(shè)備本身的數(shù)據(jù)包不作任何處理),所以HOOK點放在NF_IP_FORWARD,因為TCP第一次連接,TCP報文頭的標(biāo)志位SYN為1,解析從內(nèi)核勾出來的skb_buf數(shù)據(jù)報文,當(dāng)解析出TCP報文頭時候進行判斷,當(dāng)標(biāo)志位滿足“URG=0、ACK=0、PSH=0、RST=0、SYN=1、FIN=0”條件時候,說明此數(shù)據(jù)包為TCP連接第一次握手的數(shù)據(jù)包。將此數(shù)據(jù)包必要的字段解析出來,如源MAC地址、目的MAC地址、源IP地址、目的IP地址等,這次重要的字段參數(shù)為后續(xù)的構(gòu)造SYN ACK包作數(shù)據(jù)準(zhǔn)備,然后根據(jù)這些解析出來的參數(shù)構(gòu)造SYN ACK數(shù)據(jù)包,在內(nèi)核中構(gòu)造SYN ACK數(shù)據(jù)包很容易,這里不一一描述如何構(gòu)造SYN ACK包,這里假設(shè)已經(jīng)構(gòu)造好了該數(shù)據(jù)包,根據(jù)TCP協(xié)議,SYN ACK包是TCP連接第二次握手的數(shù)據(jù)包,所以構(gòu)造好后直接從無線AP設(shè)備內(nèi)核發(fā)送到無線終端,發(fā)送完畢后直接將第一次握手的SYN包在無線AP設(shè)備內(nèi)部丟棄(內(nèi)核代碼NF_DROP),不發(fā)送到無線AP設(shè)備IP地址主機。當(dāng)無線終端收到無線AP設(shè)備發(fā)來的SYN ACK數(shù)據(jù)包,確認無誤后,回復(fù)第三次握手的ACK包,然后發(fā)送HTTP包到無線AP設(shè)備,接下來的流程就和常規(guī)Portal流程一樣,不再描述,但是需要注意的是,Portal URL對應(yīng)的IP地址應(yīng)當(dāng)假裝白名單,也就是說無線終端發(fā)送到Portal URL對應(yīng)的IP地址不攔截,而是直接放行轉(zhuǎn)發(fā)出去,讓無線終端直接和Portal服務(wù)器建立TCP連接。
進一步的,所述字段參數(shù)包括:源MAC地址、目的MAC地址、源IP地址、目的IP地址;所述預(yù)設(shè)判斷條件為標(biāo)識位滿足“URG=0、ACK=0、PSH=0、RST=0、SYN=1、FIN=0”。
進一步的,所述無線AP設(shè)備工作模式為橋接模式;所述無線AP設(shè)備內(nèi)核設(shè)有預(yù)設(shè)的攔截指令。
本發(fā)明中,在無線AP設(shè)備的嵌入式linux內(nèi)核中注冊鉤子函數(shù)或回調(diào)函數(shù),只要能夠?qū)崿F(xiàn)攔截指令即可,對無線AP設(shè)備攔截?zé)o線終端發(fā)來的TCP的SYN數(shù)據(jù)包的方式不限定。
與現(xiàn)有技術(shù)相比,本發(fā)明提供一種Portal認證方法和系統(tǒng),至少帶來以下一種技術(shù)效果:
1、可以避免用戶輸入網(wǎng)絡(luò)不可達的IP地址導(dǎo)致不能Portal認證問題,同時對用戶輸入域名的情況也不產(chǎn)生任何負面影響。
2、在內(nèi)網(wǎng)與外部網(wǎng)絡(luò)擁堵或者網(wǎng)速很慢的情況下,根據(jù)預(yù)先知道的URL對應(yīng)的IP地址,直接輸入該IP地址進行Portal認證連接,可以大大加速Portal認證過程。
附圖說明
下面將以明確易懂的方式,結(jié)合附圖說明優(yōu)選實施方式,對一種Portal認證方法和系統(tǒng)的特性、技術(shù)特征、優(yōu)點及其實現(xiàn)方式予以進一步說明。
圖1是本發(fā)明一種Portal認證方法一個實施例的流程圖;
圖2是本發(fā)明一種Portal認證方法另一個實施例的流程圖;
圖3是本發(fā)明一種Portal認證方法另一個實施例的過程圖;
圖4是本發(fā)明一種Portal認證系統(tǒng)一個實施例的結(jié)構(gòu)示意圖;
圖5是本發(fā)明一種Portal認證系統(tǒng)另一個實施例的結(jié)構(gòu)示意圖。
具體實施方式
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對照附圖說明本發(fā)明的具體實施方式。顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖,并獲得其他的實施方式。
為使圖面簡潔,各圖中只示意性地表示出了與本發(fā)明相關(guān)的部分,它們并不代表其作為產(chǎn)品的實際結(jié)構(gòu)。另外,以使圖面簡潔便于理解,在有些圖中具有相同結(jié)構(gòu)或功能的部件,僅示意性地繪示了其中的一個,或僅標(biāo)出了其中的一個。在本文中,“一個”不僅表示“僅此一個”,也可以表示“多于一個”的情形。
參照圖1所示,本發(fā)明提供了一種Portal認證方法的一個實施例,包括步驟:
S100無線終端判斷在Portal認證頁地址欄是否輸入IP地址;若是執(zhí)行步驟S200;否則,執(zhí)行步驟S400;
S200無線AP設(shè)備判斷所述IP地址是否為認證服務(wù)器對應(yīng)的IP地址;若是執(zhí)行步驟S400;否則,執(zhí)行步驟S300;
S300所述無線AP設(shè)備攔截轉(zhuǎn)發(fā)給所述認證服務(wù)器的TCP連接數(shù)據(jù)包,使無線AP設(shè)備與無線終端進行TCP連接;
S400所述無線終端重定向請求Portal認證頁,完成Portal認證。
無線終端設(shè)備打開網(wǎng)頁或其它應(yīng)用程序時,會觸發(fā)發(fā)送上網(wǎng)請求報文,大多時候,用戶都是通過網(wǎng)址導(dǎo)航主頁直接進入,然而若用戶在瀏覽器IP地址,如果該IP地址沒有被分配給某臺內(nèi)網(wǎng)或者外網(wǎng)任何一臺主機,或者分配了但該主機處于關(guān)機狀態(tài),那么此時TCP連接就會失敗,而TCP連接失敗,后續(xù)的HTTP請求就不會再進行,從而導(dǎo)致無線終端認證結(jié)果失敗,無線終端無法通過認證,從而無法獲得上網(wǎng)權(quán)限。這里,通過判斷在Portal認證頁地址欄是否輸入IP地址,并進一步判斷輸入的IP地址是否為認證服務(wù)器對應(yīng)的IP地址,如果輸入的是IP地址且不是認證服務(wù)器對應(yīng)的IP地址,那么無線AP設(shè)備攔截轉(zhuǎn)發(fā)給認證服務(wù)器的TCP連接數(shù)據(jù)包,使無線AP設(shè)備與無線終端進行TCP連接,然后在重定向請求Portal認證頁,完成Portal認證。如果輸入的不是IP地址,也就是說輸入的是域名,那么認證服務(wù)器獲取到該無線終端的上網(wǎng)請求后,便從所述請求報文中解析出該無線終端的MAC地址,然后響應(yīng)無線終端的上網(wǎng)請求,返回給無線終端重定向報文,報文攜帶了重定向的地址和解析出的該無線終端的MAC地址,無線終端根據(jù)此重定向報文,打開Portal認證界面,根據(jù)重定向的地址發(fā)送認證請求報文,完成Portal認證。如果輸入的是IP地址,但該地址是Portal URL對應(yīng)的IP地址,那么無線AP設(shè)備對無線終端發(fā)送到Portal URL對應(yīng)的IP地址不攔截,而是直接放行轉(zhuǎn)發(fā)出去,讓無線終端直接和Portal認證服務(wù)器建立TCP連接??梢员苊庥脩糨斎刖W(wǎng)絡(luò)不可達的IP地址導(dǎo)致不能Portal認證問題,同時對用戶輸入域名的情況也不產(chǎn)生任何負面影響。在內(nèi)網(wǎng)與外部網(wǎng)絡(luò)擁堵或者網(wǎng)速很慢的情況下,用戶可以根據(jù)預(yù)先知道的URL對應(yīng)的IP地址,直接輸入該IP地址進行Portal認證連接,可以大大加速Portal認證過程。
參照圖2所示,相同的部分不再贅述。本發(fā)明提供一種Portal認證方法的另一個實施例,包括步驟:
S311所述無線終端發(fā)送所述TCP連接請求數(shù)據(jù)包至所述無線AP設(shè)備;
S312所述無線AP設(shè)備獲取所述無線終端發(fā)送的第一次數(shù)據(jù)包;
S313所述無線AP設(shè)備對所述第一次數(shù)據(jù)包進行解析,得到數(shù)據(jù)報文和字段參數(shù);
S314所述無線AP設(shè)備根據(jù)所述數(shù)據(jù)報文,判斷標(biāo)識位是否符合預(yù)設(shè)判斷條件;若是執(zhí)行步驟S314;
S315獲取的所述第一次數(shù)據(jù)包是所述SYN握手數(shù)據(jù)包;
S316所述無線AP設(shè)備根據(jù)預(yù)設(shè)的攔截指令,攔截所述無線無線AP設(shè)備轉(zhuǎn)發(fā)所述SYN握手數(shù)據(jù)包至認證服務(wù)器;
S317所述無線AP設(shè)備根據(jù)所述字段參數(shù)構(gòu)造SYN ACK握手數(shù)據(jù)包;
S320所述無線AP設(shè)備發(fā)送所述SYN ACK握手數(shù)據(jù)包至所述無線終端;并丟棄所述SYN握手數(shù)據(jù)包;
S330所述無線終端接收所述SYN ACK握手數(shù)據(jù)包;并發(fā)送ACK握手數(shù)據(jù)包至所述無線AP設(shè)備;
S340所述無線終端發(fā)送HTTP數(shù)據(jù)包至所述無線AP設(shè)備。
本發(fā)明實施例中,無線AP設(shè)備工作于橋模式下,在無線AP設(shè)備的嵌入式linux內(nèi)核中注冊鉤子函數(shù)(又名HOOK函數(shù))直接攔截?zé)o線終端發(fā)來的TCP的SYN數(shù)據(jù)包,即TCP第一次握手數(shù)據(jù)包,然后在鉤子函數(shù)中,直接構(gòu)造TCP第二次握手的報文,即SYN ACK報文,并通過內(nèi)核發(fā)送函數(shù)直接發(fā)送到無線終端,然后將第一次握手的數(shù)據(jù)報文丟棄,此時第一次握手報文不會通過無線AP設(shè)備轉(zhuǎn)發(fā)出去,第二次握手完成后,無線終端收到SYN ACK報文后,會發(fā)送ACK數(shù)據(jù)包進行第三次握手。TCP連接是在無線終端和無線AP設(shè)備之間完成,用時很短,大大提高了連接速率。本發(fā)明實施例中,在內(nèi)核注冊一個鉤子函數(shù),因為無線AP設(shè)備工作在橋模式下,是對無線AP設(shè)備轉(zhuǎn)發(fā)的數(shù)據(jù)包進行攔截(對發(fā)到無線AP設(shè)備本身的數(shù)據(jù)包不作任何處理),所以HOOK點放在NF_IP_FORWARD,因為TCP第一次連接,TCP報文頭的標(biāo)志位SYN為1,解析從內(nèi)核勾出來的skb_buf數(shù)據(jù)報文,當(dāng)解析出TCP報文頭時候進行判斷,當(dāng)標(biāo)志位滿足“URG=0、ACK=0、PSH=0、RST=0、SYN=1、FIN=0”條件時候,說明此數(shù)據(jù)包為TCP連接第一次握手的數(shù)據(jù)包。將此數(shù)據(jù)包必要的字段解析出來,如源MAC地址、目的MAC地址、源IP地址、目的IP地址等,這次重要的字段參數(shù)為后續(xù)的構(gòu)造SYN ACK包作數(shù)據(jù)準(zhǔn)備,然后根據(jù)這些解析出來的參數(shù)構(gòu)造SYN ACK數(shù)據(jù)包,在內(nèi)核中構(gòu)造SYN ACK數(shù)據(jù)包很容易,這里不一一描述如何構(gòu)造SYN ACK包,這里假設(shè)已經(jīng)構(gòu)造好了該數(shù)據(jù)包,根據(jù)TCP協(xié)議,SYN ACK包是TCP連接第二次握手的數(shù)據(jù)包,所以構(gòu)造好后直接從無線AP設(shè)備內(nèi)核發(fā)送到無線終端,發(fā)送完畢后直接將第一次握手的SYN包在無線AP設(shè)備內(nèi)部丟棄(內(nèi)核代碼NF_DROP),不發(fā)送到無線AP設(shè)備IP地址主機。當(dāng)無線終端收到無線AP設(shè)備發(fā)來的SYN ACK數(shù)據(jù)包,確認無誤后,回復(fù)第三次握手的ACK包,然后發(fā)送HTTP包到無線AP設(shè)備,接下來的流程就和常規(guī)Portal流程一樣,不再描述,但是需要注意的是,Portal URL對應(yīng)的IP地址應(yīng)當(dāng)假裝白名單,也就是說無線終端發(fā)送到Portal URL對應(yīng)的IP地址不攔截,而是直接放行轉(zhuǎn)發(fā)出去,讓無線終端直接和Portal服務(wù)器建立TCP連接。所述無線AP設(shè)備工作模式為橋接模式;所述無線AP設(shè)備內(nèi)核設(shè)有預(yù)設(shè)的攔截指令。本發(fā)明實施例中,在無線AP設(shè)備的嵌入式linux內(nèi)核中注冊鉤子函數(shù)或回調(diào)函數(shù),只要能夠?qū)崿F(xiàn)攔截指令即可,對無線AP設(shè)備攔截?zé)o線終端發(fā)來的TCP的SYN數(shù)據(jù)包的方式不限定。如圖2所示,首先無線終端用戶在瀏覽器直接輸入源IP地址+目的IP地址(該目的IP地址并未對任何主機分配),如果按照常規(guī)Portal方案,那么此時無線AP設(shè)備將SYN數(shù)據(jù)包轉(zhuǎn)發(fā)出去,由于不存在該主機,所以不會有SYN ACK數(shù)據(jù)包返回,多次嘗試后,連接超時結(jié)束,此時瀏覽器便不再有任何響應(yīng),在本方案中無線AP設(shè)備構(gòu)造SYN ACK數(shù)據(jù)包(源IP地址是用戶使用的無線終端IP地址,而不是無線AP設(shè)備的IP地址;目的IP地址不是認證服務(wù)器的IP地址,而是用戶想要訪問的網(wǎng)址對應(yīng)的主機IP地址)發(fā)送給無線終端,無線終端再發(fā)送ACK包給無線AP設(shè)備,然后再次和常規(guī)Portal方案一致進行HTTP請求,重定向請求Portal認證頁,認證等步驟(Portal.com為Portal認證頁地址)。
參照圖3所示,本發(fā)明提供一種Portal認證系統(tǒng)的一個實施例,Portal認證系統(tǒng)1000包括:
無線終端100,所述無線終端100與無線AP設(shè)備200通訊連接;所述無線終端100判斷在Portal認證頁地址欄是否輸入IP地址;
無線AP設(shè)備200,所述無線AP設(shè)備200與認證服務(wù)器300通訊連接;所述無線AP設(shè)備200判斷所述IP地址是否為所述認證服務(wù)器300對應(yīng)的IP地址;
當(dāng)在Portal認證頁地址欄輸入IP地址,并且所述IP地址不是所述認證服務(wù)器300對應(yīng)的IP地址攔;所述無線AP設(shè)備200攔截轉(zhuǎn)發(fā)給認證服務(wù)器300的TCP連接數(shù)據(jù)包;無線AP設(shè)備200與無線終端100進行TCP連接;
當(dāng)所述無線終端100在Portal認證頁地址欄不輸入IP地址;或者,
當(dāng)所述無線終端100在Portal認證頁地址欄輸入IP地址,所述IP地址是所述認證服務(wù)器300對應(yīng)的IP地址攔,所述無線終端100重定向請求Portal認證頁,完成Portal認證。
本發(fā)明實施例中,無線終端100判斷在Portal認證頁地址欄是否輸入IP地址,并無線AP設(shè)備200判斷所述IP地址是否為所述認證服務(wù)器300對應(yīng)的IP地址。如果輸入的是IP地址且不是認證服務(wù)器300對應(yīng)的IP地址,那么無線AP設(shè)備200攔截轉(zhuǎn)發(fā)給認證服務(wù)器300的TCP連接數(shù)據(jù)包,使無線AP設(shè)備200與無線終端100進行TCP連接,然后在重定向請求Portal認證頁,完成Portal認證。如果輸入的不是IP地址,也就是說輸入的是域名,那么認證服務(wù)器300與無線終端100進行TCP連接,完成Portal認證。如果輸入的是IP地址,但該地址是Portal URL對應(yīng)的IP地址,那么無線AP設(shè)備200對無線終端100發(fā)送到Portal URL對應(yīng)的IP地址不攔截,而是直接放行轉(zhuǎn)發(fā)出去,讓無線終端100直接和Portal認證服務(wù)器300建立TCP連接??梢员苊庥脩糨斎刖W(wǎng)絡(luò)不可達的IP地址導(dǎo)致不能Portal認證問題,同時對用戶輸入域名的情況也不產(chǎn)生任何負面影響。在內(nèi)網(wǎng)與外部網(wǎng)絡(luò)擁堵或者網(wǎng)速很慢的情況下,用戶可以根據(jù)預(yù)先知道的URL對應(yīng)的IP地址,直接輸入該IP地址進行Portal認證連接,可以大大加速Portal認證過程。
參照圖4所示,相同的部分不再贅述。本發(fā)明提供一種Portal認證系統(tǒng)的另一個實施例,所述無線AP設(shè)備200包括:
判斷模塊210,所述判斷模塊210與攔截模塊通訊連接;判斷所述IP地址是否為所述認證服務(wù)器300對應(yīng)的IP地址;
控制模塊220,所述無線AP設(shè)備200攔截所述無線終端100發(fā)送的SYN握手數(shù)據(jù)包;構(gòu)造SYN ACK握手數(shù)據(jù)包;發(fā)送所述SYN ACK握手數(shù)據(jù)包至所述無線終端100;并丟棄所述SYN握手數(shù)據(jù)包;
進一步的,所述控制模塊220包括:
獲取子模塊221,所述獲取子模塊221與解析子模塊222通訊連接;獲取所述無線終端100發(fā)送的第一次數(shù)據(jù)包;
解析子模塊222,所述解析子模塊222與判斷子模塊223通訊連接;對所述第一次數(shù)據(jù)包進行解析,得到數(shù)據(jù)報文和字段參數(shù);
判斷子模塊223,所述判斷子模塊223與輸出子模塊224通訊連接;根據(jù)所述數(shù)據(jù)報文,判斷標(biāo)識位是否符合預(yù)設(shè)判斷條件;
輸出子模塊224,所述輸出子模塊224與攔截子模塊225通訊連接;輸出獲取的所述第一次數(shù)據(jù)包是所述TCP SYN握手數(shù)據(jù)包;
攔截子模塊225,所述攔截子模塊225與構(gòu)造子模塊226通訊連接;根據(jù)預(yù)設(shè)的攔截指令,攔截所述無線無線AP設(shè)備200轉(zhuǎn)發(fā)所述TCP SYN握手數(shù)據(jù)包至認證服務(wù)器300;
構(gòu)造子模塊226,根據(jù)所述字段參數(shù)構(gòu)造TCP SYN ACK握手數(shù)據(jù)包。
所述無線終端100包括:
發(fā)送模塊110,所述發(fā)送模塊110與接收模塊120通訊連接;發(fā)送所述TCP連接請求數(shù)據(jù)包至所述無線AP設(shè)備200;發(fā)送ACK握手數(shù)據(jù)包至所述無線AP設(shè)備200;發(fā)送HTTP數(shù)據(jù)包至所述無線AP設(shè)備200;
接收模塊120,接收所述SYN ACK握手數(shù)據(jù)包。
無線AP設(shè)備200工作于橋模式下,在無線AP設(shè)備200的嵌入式linux內(nèi)核中注冊鉤子函數(shù)(又名HOOK函數(shù))直接攔截?zé)o線終端100發(fā)來的TCP的SYN數(shù)據(jù)包,即TCP第一次握手數(shù)據(jù)包,然后在鉤子函數(shù)中,直接構(gòu)造TCP第二次握手的報文,即SYN ACK報文,并通過內(nèi)核發(fā)送函數(shù)直接發(fā)送到無線終端100,然后將第一次握手的數(shù)據(jù)報文丟棄,此時第一次握手報文不會通過無線AP設(shè)備200轉(zhuǎn)發(fā)出去,第二次握手完成后,無線終端100收到SYN ACK報文后,會發(fā)送ACK數(shù)據(jù)包進行第三次握手。TCP連接是在無線終端100和無線AP設(shè)備200之間完成,用時很短,大大提高了連接速率。
在內(nèi)核注冊一個鉤子函數(shù),因為無線AP設(shè)備200工作在橋模式下,是對無線AP設(shè)備200轉(zhuǎn)發(fā)的數(shù)據(jù)包進行攔截(對發(fā)到無線AP設(shè)備200本身的數(shù)據(jù)包不作任何處理),所以HOOK點放在NF_IP_FORWARD,因為TCP第一次連接,TCP報文頭的標(biāo)志位SYN為1,解析從內(nèi)核勾出來的skb_buf數(shù)據(jù)報文,當(dāng)解析出TCP報文頭時候進行判斷,當(dāng)標(biāo)志位滿足“URG=0、ACK=0、PSH=0、RST=0、SYN=1、FIN=0”條件時候,說明此數(shù)據(jù)包為TCP連接第一次握手的數(shù)據(jù)包。將此數(shù)據(jù)包必要的字段解析出來,如源MAC地址、目的MAC地址、源IP地址、目的IP地址等,這次重要的字段參數(shù)為后續(xù)的構(gòu)造SYN ACK包作數(shù)據(jù)準(zhǔn)備,然后根據(jù)這些解析出來的參數(shù)構(gòu)造SYN ACK數(shù)據(jù)包,在內(nèi)核中構(gòu)造SYN ACK數(shù)據(jù)包很容易,這里不一一描述如何構(gòu)造SYN ACK包,這里假設(shè)已經(jīng)構(gòu)造好了該數(shù)據(jù)包,根據(jù)TCP協(xié)議,SYN ACK包是TCP連接第二次握手的數(shù)據(jù)包,所以構(gòu)造好后直接從無線AP設(shè)備200內(nèi)核發(fā)送到無線終端100,發(fā)送完畢后直接將第一次握手的SYN包在無線AP設(shè)備200內(nèi)部丟棄(內(nèi)核代碼NF_DROP),不發(fā)送到無線AP設(shè)備200IP地址主機。當(dāng)無線終端100收到無線AP設(shè)備200發(fā)來的SYN ACK數(shù)據(jù)包,確認無誤后,回復(fù)第三次握手的ACK包,然后發(fā)送HTTP包到無線AP設(shè)備200,接下來的流程就和常規(guī)Portal流程一樣,不再描述,但是需要注意的是,Portal URL對應(yīng)的IP地址應(yīng)當(dāng)假裝白名單,也就是說無線終端100發(fā)送到Portal URL對應(yīng)的IP地址不攔截,而是直接放行轉(zhuǎn)發(fā)出去,讓無線終端100直接和Portal服務(wù)器建立TCP連接。
所述無線AP設(shè)備200工作模式為橋接模式;所述無線AP設(shè)備200內(nèi)核設(shè)有預(yù)設(shè)的攔截指令。本發(fā)明實施例中,在無線AP設(shè)備200的嵌入式linux內(nèi)核中注冊鉤子函數(shù)或回調(diào)函數(shù),只要能夠?qū)崿F(xiàn)攔截指令即可,對無線AP設(shè)備200攔截?zé)o線終端100發(fā)來的TCP的SYN數(shù)據(jù)包的方式不限定。
應(yīng)當(dāng)說明的是,上述實施例均可根據(jù)需要自由組合。以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。