無線熱點登陸認證原理探究---captive portal


什么是Captive Portal

大家肯定都連過公共場所的wifi熱點,比如麥當勞等地方的。他們的wifi往往一連上去就會彈出一個要求登錄或者微信關注之類的頁面,只有在這個頁面完成操作了才能正常訪問網絡的。之前看到這個很神奇,為什么一連wifi,手機就會自動打開這個網頁的,就知道android系統應該是提供了一些接口的。最近接觸到這個,查了一下才知道這個東西叫做“captive portal”,就是專門用來給后端的網關提供鑒權計費之類的服務的。很多公共場合的wifi熱點應該都用了這么一個技術,比如酒店,商場,銀行等等。

Apple的Captive Network Assistant 

  1. 發送一個HTTP/1.0的請求到 
  2. 接收一個回應,如果回應跟它預計的結果一致,那么認為網絡是通的,就不會自動彈出頁面。同時,狀態欄的WIFI圖標出現。流程結束。否則,進入下一步。
  3. 如果收到的回應不是它想要的那個,它就認為有CWP存在。
  4. 如果有CWP存在,iOS就會自動打開一個頁面,在這個頁面中再請求一次  ,這一次使用的是HTTP/1.1。
  5. 然后就可以打開Login頁面了。

 

1.一個通常的認證流程是什么樣的,從設備接入到認證前后發生了哪些動作?

具體的實施方式有不止一種,例如:

  • Redirection by HTTP(HTTP 重定向)
  • ICMP Redirect (ICMP 重定向)
  • Redirection by DNS (DNS 重定向)

在設備第一次接入到無線網絡的時候,會通過 DHCP 服務獲取到一個 IP 地址,可能是公有地址也可能是私有地址。不論分配到的 IP 地址屬於公有或者私有,此時客戶端都只具備訪問指定站點的權限,需要在 Portal 頁面上完成認證(確認接受使用條款,驗證賬號密碼等),在 Portal 頁面完成認證后,這個系統通常會立即執行一系列的動作包括,重新分配地址(在原本是私有地址時可選),更新這台設備對應的權限控制列表(ACL)中的信息解除訪問限制,並開始計時/計費等動作。

當用戶需要停止使用這類網絡時,通常在 Portal 頁面上會提供主動斷開的按鈕,或者服務器會在一段時間沒有檢測到該客戶端網絡流量時將你的設備做下線處理,以保證計費准確並及時釋放占用的 IP 地址。

以上就是一台新設備接入到需要 Portal 認證的網絡環境中在獲得訪問互聯網權限之前的大致步驟。那在一台設備完成介入后,以后再訪問這類網絡是否可以不必進行重復的認證就直接接入網絡呢?答案當然是肯定的,否則在網絡條件不好時無窮無盡的輸入賬號密碼登陸不用強調也知道是一件折磨死人的事情,而這個問題的解決使用了叫做無感知認證的解決方案。關於無感知認證在參考資料中給出了常見的認證方式下實現無感知認證的方案。無感知認證的思想總結起來就是在完成了首次認證后再次接入時會利用已保存的信息進行后台驗證,不需要用戶主動輸入口令進行登陸。不過這並不是我想了解的重點,於是不再繼續深入了解。

當時產生這個疑問的時候,是用 iPhone 連接到熱點后,系統會彈出一個類似瀏覽器的窗口,那么這個窗口是怎么彈出來的,觸發的條件又是什么呢。根據前面收集到的信息,我使用 Captive Portal iOS 作為關鍵字在谷歌進行搜索,找到了一些相關的信息,大致介紹了這里面相關的細節。iOS設備所彈出的認證窗口是由 Apple Captive Network Assistant(CNA) 來完成的。大體的流程是當你首先鏈接到 Wi-Fi 網絡后,iOS 設備會從它所屬的眾多域名下的特定域名選擇一個或多個進行訪問,例如

  • www.appleiphonecell.com
  • captive.apple.com
  • captive.apple.com
  • www.apple.com
  • www.itools.info
  • www.ibook.info
  • www.airport.us
  • www.thinkdifferent.us

當域名能夠被解析且對特定的網頁訪問得到正確的響應(通常是 Success )時,CNA 會判定設備成功的鏈接到了互聯網,比如這個頁面,。如果域名被解析但訪問特定頁面返回的內容不是預期的結果,那么 CNA 會認為設備所處網絡存在Captive Portal,因此會調用一個專門的類似瀏覽器的頁面來發起網絡請求並觸發 Portal 頁面,來引導用戶進行登錄或者認證。

 

GET /library/test/success.html
HTTP/1.0
Host: www.apple.com
User-Agent:CaptiveNetworkSupport/1.0 wispr
Connection: close

  

 

可以看到,在請求特定的頁面時,CNA 也使用了一個自定的 User-Agent,這有助於我們識別iOS設備的 Captive Portal 探測請求並選擇性的繞過,來實現自定的認證方式

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM