代码之家  ›  专栏  ›  技术社区  ›  zgc7009

防止在身份验证后自动关闭Captive Portal(Android)

  •  14
  • zgc7009  · 技术社区  · 10 年前

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

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

    我所尝试的:

    1. 检测浏览器是否在移动设备中启动,并在 在卸载之前 它试图保持浏览器打开。

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

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

    什么不起作用:

    • 要求用户禁用其设备上的捕获门户选项。不试图将普通用户指向高级控件。

    • 创建一个开放网络来访问MAC管理器,它必须在某些身份验证之后。

    目前的解决方案:

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

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

    3 回复  |  直到 6 年前
        1
  •  12
  •   Johann Combrink    9 年前

    通过添加防火墙规则阻止,我们成功地在棒棒糖上保持了UAM浏览器/附属门户浏览器的打开状态:

    • 客户端3.google.com
    • 客户端1.google。通用域名格式,
    • 安卓客户端.google.com
    • connectionycheck.android.com
    • connectvitycheck.gstatic.com

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

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

        2
  •  3
  •   derekm    10 年前

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

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

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

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

        3
  •  0
  •   lukyer    10 年前

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

    在所有版本中测试并运行Android和iOS。 如果您需要从默认浏览器(而非专属ios/android沙盒浏览器)访问cookies/共享存储,则必须在身份验证之前跳出。