防止强制网络门户在身份验证后自动关闭 (Android)

Prevent Captive Portal auto-close after authentication (Android)

本文关键字:Android 身份验证 网络      更新时间:2023-09-26

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

到目前为止,在我们测试的所有内容上,包括"较旧"的Android设备,这似乎没有问题,并且事情可以正常运行。然而,在Lollipop(5.0+)版本的Android中,强制门户发生了很大变化,其中一部分变化是自动关闭加入网络时启动的强制门户。因为我们希望他们在身份验证后被重定向到 MAC 设备管理页面,以便他们可以添加他们当前登录的设备并避免再次登录,所以这很糟糕。

我尝试过的:

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

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

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

什么不起作用:

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

  • 创建一个开放的网络来访问MAC管理器,它必须支持一些身份验证。

目前的解决方案:

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

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

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

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

因此,在用户通过身份验证后,UAM/强制网络浏览器将保持打开状态。

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

这似乎是自棒棒糖(5.0)发布以来Android设备中的新强制门户行为。

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

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

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

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

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