【问题标题】:Prevent Captive Portal auto-close after authentication (Android)防止 Captive Portal 在身份验证后自动关闭 (Android)
【发布时间】:2016-04-28 06:04:12
【问题描述】:

所以简单的想法是我们有一个 RADIUS 服务器设置,以允许用户通过用户凭据向我们的 Ruckus 控制器进行身份验证。在进行身份验证时,应将用户重定向到允许他们管理经过 MAC 身份验证的设备的页面。

到目前为止,在我们测试过的所有设备上,包括“较旧”的 Android 设备,这似乎都不是问题,并且一切正常运行。然而,对于 Android 的 Lollipop(5.0+)版本,强制门户已经发生了很大变化,其中一部分更改是自动关闭在您加入网络时启动的强制门户。因为我们希望他们在认证后被重定向到 MAC 设备管理页面,这样他们就可以添加他们当前登录的设备并避免再次登录,这很糟糕。

我尝试过的:

  1. 检测浏览器是否正在移动设备中启动,并在 onbeforeunload 中弹出一个警报,试图让浏览器保持打开状态。

  2. 在检测到成功的身份验证时打开一个新的浏览器窗口,指向重定向 URL(本质上是我们自己管理重定向)。

  3. 对重定向的 URL 执行选项 2,然后执行选项 1

什么不起作用:

  • 要求用户在其设备上禁用强制门户选项。不试图将一般用户指向高级控件。

  • 创建一个开放网络来访问 MAC 管理器,它必须经过某种身份验证。

目前的解决方案:

我们对这个解决方案不满意,但现在我们只是要求用户通过网络进行身份验证,然后打开他们的浏览器并转到用户用来手动添加他们的设备的基本登录门户页面(非网络身份验证)无法连接(如打印机、游戏设备等)。虽然这可行,但用户必须登录、打开浏览器、手动输入 url 并再次登录是一件很痛苦的事情。

这不是人们没有遇到过的问题,see here,我只是无法从遇到问题的任何人那里找到解决方案。当然,在这种情况下,有一些方法可以利用 javascript 或其他东西来保持浏览器打开。如果没有,有人有更好的管理方法吗?

【问题讨论】:

  • 您找到解决方案了吗?我正在寻找相同的行为
  • @MtotheK 目前还没有运气。如果我找到一个答案,我会更新答案,如果你能在最后找到一些东西,你可以让我们这样的人发布,我将不胜感激。确实令人沮丧。
  • @zgc7009 遇到这个问题了吗?
  • @CamiloAguilar 不幸的是没有。 Google 了解该功能,知道需要重定向的人不高兴,并且仍然将其视为预期功能。他们似乎对整个过程几乎没有控制。
  • 设法解决了这个问题,通过防火墙关闭身份验证后的连接检查,并在我们需要关闭 204 时进行反向代理。检查我在线程中的答案。

标签: javascript android authentication captivenetwork


【解决方案1】:

通过添加防火墙规则阻止,我们设法使 UAM 浏览器/强制门户浏览器在棒棒糖上保持打开状态:

  • clients3.google.com
  • clients1.google.com,
  • android.clients.google.com
  • connectivitycheck.android.com
  • connectivitycheck.gstatic.com

因此,在用户通过身份验证后,UAM / Captive Browser 保持打开状态。

您可以根据需要将 UAM 保持打开状态,也可以通过调用反向代理 204 重定向到 google 的连接页面来关闭它。

【讨论】:

  • 您好,您能详细说明一下吗?我正在尝试在 OPNsense 上执行此操作。如果您阻止这些域,连接将被解释为没有互联网,对吗?在您解锁它们之前,它将保持打开状态。做对了吗。我不明白您所说的反向代理 204 重定向是什么意思...
  • 您需要在网络的“已验证”端阻止它们,而不是在被吸引的部分。
  • 我们可以把它移到聊天室吗?
  • 我们怎样才能使反向代理204?谢谢!
  • 嗨@JohannCombrink,我们如何反向代理 204,我在 tplink EAP 设备上配置了一个强制门户,使用具有半径服务器身份验证的外部门户页面。您能否指导我如何实施反向代理 204?谢谢
【解决方案2】:

这似乎是自 Lollipop (5.0) 发布以来 Android 设备中的新 Captive Portal 行为。

我们尚未找到解决方法。如果有明确的方法来禁用自动关闭,它可能只记录在此处可用的 Android 代码库中(我一直在寻找,但还没有找到任何确定的东西):

https://android.googlesource.com/platform/frameworks/base

仅供参考,我们还注意到 Android 使用 CloudFront CDN 进行强制网络检测。我们的强制门户解决方案最初将 CloudFront 用于资产,因此我们必须在预授权 ACL 中将 CloudFront 子网列入白名单。将 CloudFront 列入白名单随后导致最近的 Android 设备上的强制网络检测失败。我们不得不放弃 CloudFront CDN 来恢复 Android 设备的强制门户功能。

【讨论】:

  • 感谢您的详细回复。这当然是一个令人头疼的问题,我们一直希望我们、谷歌或其他人能够为这个问题找到解决方案,但似乎没有任何事情朝着这个方向发展。 重定向成为热点的重要组成部分并不少见,对我来说很奇怪,这个“问题”被允许徘徊而至少没有解释原因。
  • 我们找到了一个解决方案,在该解决方案中,当我们重定向到控制器以对客户端进行身份验证以将它们从预身份验证 ACL 移动到完全访问 ACL 直到他们明确地单击“浏览 Internet”按钮。此解决方案要求我们的客户将他们在欢迎页面横幅广告和登陆 URL 中使用的所有外部资源列入白名单。
  • 我们已经确定并测试了第二种解决方案,我们可以将 Android 的connectivitycheck.gstatic.com IP 列入白名单(通过主机名到 IP 的解析监控来更新 IP 分配更改的白名单)。这会导致 Android 设备回退到类似 DNS 重定向的强制方法。此解决方案还要求我们的客户将他们在欢迎页面横幅广告和登陆 URL 中使用的所有外部资源列入白名单。
  • 所以我们有一个解决方案矩阵,其中包含各种权衡和责任。我可以编辑上述答案以更好地描述场景。重新捕获选项: 1) 延迟 ACL 升级控制器重定向,直到他们单击页面底部的某个“浏览 Internet”按钮; 2) 将 Android 强制网络检测 URL 列入白名单,仅适用于 Android 回退到类似 DNS 重定向的强制方法; 3) 在所有设备上使用类似 Cisco 的强制绕过方法来实现类似 DNS 重定向的方法。白名单选项:1)将外部广告资源列入白名单,将其他所有资源列入黑名单; 2) 将顶级网站列入黑名单,将所有其他网站列入白名单。
  • 如果您不介意将答案中的内容概述为其他人的指南,我们将不胜感激。虽然它不能完全解决我们的问题,但它肯定比我能够给人们提供的 shrug 答案要好。
【解决方案3】:

您为什么不在身份验证后打开强制门户?您始终可以允许访问每个网站除了强制检查网站。

在所有版本中都经过测试并在 Android 和 iOS 上运行。 如果您需要从默认浏览器(不是强制 ios/android 沙盒浏览器)访问 cookie/共享存储,则必须在身份验证前跳出它。

【讨论】:

  • 我的问题是如何你把它打开。操作系统在身份验证后自动关闭强制门户。
  • cite:“您始终可以允许访问除强制检查站点之外的每个站点。”
  • 本质上是一个开放的网络。我们需要强制门户在用户连接到网络时触发。我们没有列入白名单。感谢您的意见。
  • 我的意思是在认证之后,当然。我为我的误会道歉。我们的流程:用户连接到 wifi,显示强制门户,用户选择身份验证方法,允许互联网访问,用户在强制中跟踪广告/链接/,用户随时关闭强制。
  • 我们遇到的问题是,一旦用户通过身份验证,强制门户就会关闭。一旦进行身份验证,就无法在强制门户中继续运行,它不会保持打开状态。如果您能够保持打开状态,请告诉我们如何操作。白名单不会让门户保持打开状态,它只会让用户无需身份验证即可浏览,至少据我所知。
猜你喜欢
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多