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

问题描述 投票:0回答:4

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

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

我尝试过的:

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

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

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

什么不起作用:

  • 要求用户禁用其设备上的强制门户选项。不试图向普通用户引导高级控件。

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

目前的解决方案:

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

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

javascript android authentication captivenetwork
4个回答
12
投票

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

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

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

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


3
投票

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

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

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

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


0
投票
为什么不在身份验证后保持强制门户打开?您始终可以允许访问每个站点

除了强制检查站点。

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


0
投票
对此有什么建议吗?我仍然没有找到解决方案

© www.soinside.com 2019 - 2024. All rights reserved.