当我到一个WiFi热点的地方(比如Panera Bread)并用我的iPhone连接时,登录页会以弹窗的形式出现。也就是说,无论我运行什么应用程序或者在什么网页上,该登录页面都会从底部滚动出来,要求输入我的登录凭据,然后消失。
但在其他一些热点中,直到我到Safari中尝试加载一个网页之前,我都没有看到登录页面。
iPhone在寻找什么原因导致在一些热点中弹出登录页面而在另一些热点中不弹出?有特殊的HTML元标签吗?还是与重定向的实现方式有关?
我成功找到了这种认证类型的正确术语: “Captive portal”(强制门户)。在Google中搜索“Captive Portal iPhone”,可以从这些页面获取一些技术细节:one,two,three。
要实现Wi-Fi弹出式登录页面:
www.apple.com
的DNS请求不能失败CaptiveNetworkSupport/1.0 wispr
的HTTP请求http://www.apple.com/library/test/success.html不能返回Success
。我还没有测试过,但听起来差不多。
下面的评论提到iOS 7的行为有所不同,可能会查询多个服务器。 我没有测试过。因此,最简单的方法是将所有HTTP通信重定向到您的登录页面,并阻止所有非HTTP通信。
微软的强制门户检测使用类似的方法,与iOS7之前的行为相似:其网络连接状态指示器尝试联系http://www.msftncsi.com。 Windows 8和8.1还包括对WISPr的支持。
Android的囚禁门户检测(截至AOSP 4.0.1版本)尝试访问http://clients3.google.com/generate_204或http://www.google.com/blank.html。
因此,为了尽可能地通用,您需要阻止除身份验证之外的所有通信,并在登录页面上包含WISPr支持。
我建议“使用网络上的适当身份验证”--例如PEAP+MSCHAPv2--但Windows使用户设置非常痛苦。 我不知道谁认为“使用Windows身份验证详细信息”是非企业域网络机器的理智默认值,甚至不知道为什么“检查证书有效性”是一个合理的默认值,因为大多数网络将不会把获取适当证书视为优先事项。
iOS 6 显然已经修复了 WPA2 EAP,因为现在突然弹出了登录窗口。
我们公司的公共 WiFi 需要接受有关监控等方面的条款。我以前总是不得不手动打开 iPhone 或 iPad 上的 Safari 并导航到某个地方,它会重定向到一个内部接受页面,当你点击接受按钮时,它会回到你最初想去的地方。
今天,我升级到 iOS 6,惊喜地看到登录窗口从底部滑出,并允许我点击接受按钮,甚至不用打开 Safari。
我怀疑当登录页面弹出时,Wi-Fi正在使用EAP。这是一种用于身份验证的Wi-Fi协议。在需要转到网页的情况下,认证将是由服务器实施的自定义访问(即比EAP更高级别的访问)。