安卓 : Wireless access point session timeout and HostnameValidation errors

标签 android ssl android-networking retrofit okhttp

我遇到的情况是,我在公司网络上有一个无线接入点,需要安全登录才能访问网络。在约 30 分钟的空闲时间后,它将提示用户重新进行身份验证。

在我的应用程序中(使用改造 + okhttp),“您的 session 已超时”显示为“java.io.IOException:主机名‘example.com’未验证”异常。仔细检查表明正在根据无线接入点的证书验证“example.com”,并且与该证书关联的唯一有效域是接入点的域 (securelogin.arubanetworks.com)。这就是触发异常的原因。如果我离开应用程序,启动浏览器,使用接入点重新验证并返回到应用程序,我仍然会遇到相同的主机名未验证问题。这给我留下了两个问题:

1) 除了等待和处理 IOException 之外,是否有更好的方法来检测这种超时情况?

2) 一旦 session 超时,我似乎无法让 http 客户端停止尝试根据访问点证书验证主机名。一旦用户重新验证(通过浏览器),有没有办法在不重启应用的情况下恢复?

最佳答案

  1. 没有很好的方法来处理强制访问点。我能想到的最好办法是在已知 HTTP 地址 ( http://somedomainyoucontrol.com ) 托管已知内容,并查看对该域的 HTTP 请求是否被重定向到域外。这似乎是 Mac OS X 为检测强制接入点所做的工作;它使用 apple.com 上的一个页面。

  2. 我怀疑这是一个 DNS 缓存,而不是 HTTP 客户端,这让您对重新尝试感到悲伤。一旦 SSL 握手失败,HTTP 客户端将不会保持连接。您需要配置强制门户的 DNS 以设置非常短的 TTL。

关于安卓 : Wireless access point session timeout and HostnameValidation errors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23138208/

相关文章:

android - 检测是否没有互联网连接

android - 在 SQLite 中通过一次查找根据内容更新文本列

Android Google Maps API V2 - 在 map 上标记区域

c# - Xamarin iOS 覆盖自签名证书的 TLS 链验证

android - Android DNS 需要预热吗?

java - AutoCompleteTextView - 禁用过滤

java - 如何从 Java SSLSocket 访问最终协商的协议(protocol)和密码?

ssl - 使用 Firefox 查找域的 SSL 颁发者

android - 如何制作一个android应用程序以从连接在同一wifi上的我的android设备获取pc的IP地址

android - 获取我的 wifi ip 地址 Android