防止身份验证后自动关闭强制门户 (Android)
Prevent Captive Portal auto-close after authentication (Android)
所以简单的想法是我们有一个 RADIUS 服务器设置,允许用户通过用户凭据对我们的 Ruckus 控制器进行身份验证。在身份验证时,用户应该被重定向到一个页面,允许他们管理 MAC 个经过身份验证的设备。
到目前为止,我们测试的所有内容,包括 "older" Android 设备,这似乎都不是问题,而且 运行 应该是这样。然而,对于 Android 的 Lollipop (5.0+) 版本,强制门户已经发生了很大变化,部分更改是在您加入网络时自动关闭启动的强制门户。因为我们希望他们在身份验证后被重定向到 MAC 设备管理页面,以便他们可以添加他们当前登录的设备并避免再次登录,这很糟糕。
我试过的:
检测浏览器是否正在移动设备中启动,并在 onbeforeunload 中弹出警告,试图保持浏览器打开。
打开新浏览器window,指向重定向URL,当检测到身份验证成功时(基本上我们自己管理重定向)。
执行选项 2,然后在重定向的 URL
上执行选项 1
什么不起作用:
要求用户禁用其设备上的强制门户选项。不试图将普通用户指向高级控件。
正在创建一个开放网络来访问 MAC 管理器,它必须经过一些身份验证。
目前的解决方案:
我们对这个解决方案不满意,但现在我们只是要求用户通过网络进行身份验证,然后打开浏览器并转到用户用于手动添加的基本登录门户页面(非网络身份验证)他们无法连接的设备(如打印机、游戏设备等)。虽然这可行,但用户必须登录,打开浏览器,手动输入 url,然后再次登录,这很痛苦。
这不是人们没有 运行 进入的问题,see here,我只是无法从 运行 进入的任何人那里找到解决方案问题。当然,在这种情况下,有一些方法可以利用 javascript 或其他方法来保持浏览器打开。如果没有,有人有更好的管理方法吗?
这似乎是自 Lollipop (5.0) 发布以来 Android 设备中新的强制门户行为。
我们尚未发现解决方法。如果有禁用自动关闭的明确方法,它可能只记录在此处可用的 Android 代码库中(我一直在寻找,但还没有找到任何确定的东西):
https://android.googlesource.com/platform/frameworks/base
仅供参考,我们还注意到 Android 使用 CloudFront CDN 进行强制网络检测。我们的强制门户解决方案最初将 CloudFront 用于资产,因此我们必须在预授权 ACL 中将 CloudFront 子网列入白名单。将 CloudFront 列入白名单随后导致最近 Android 设备上的强制网络检测失败。我们不得不放弃 CloudFront CDN 以恢复 Android 设备的强制门户功能。
您为什么不在身份验证后保持打开的强制门户?您始终可以允许访问每个站点 除了 强制检查站点。
已在所有版本中测试并运行 Android 和 iOS。
如果你需要从默认浏览器访问 cookies/shared 存储(不是强制 ios/android 沙盒浏览器),你必须在身份验证之前跳出它。
我们通过添加防火墙规则阻止,设法使 UAM 浏览器/强制门户浏览器在 lollipop 上保持打开状态:
- clients3.google.com
- clients1.google.com ,
- android.clients.google.com
- connectivitycheck.android.com
- connectivitycheck.gstatic.com
因此,在用户通过身份验证后,UAM/Captive Browser 保持打开状态。
您可以根据需要保持 UAM 打开,您可以通过调用反向代理 204 重定向到 google 的连接页面来关闭它。
所以简单的想法是我们有一个 RADIUS 服务器设置,允许用户通过用户凭据对我们的 Ruckus 控制器进行身份验证。在身份验证时,用户应该被重定向到一个页面,允许他们管理 MAC 个经过身份验证的设备。
到目前为止,我们测试的所有内容,包括 "older" Android 设备,这似乎都不是问题,而且 运行 应该是这样。然而,对于 Android 的 Lollipop (5.0+) 版本,强制门户已经发生了很大变化,部分更改是在您加入网络时自动关闭启动的强制门户。因为我们希望他们在身份验证后被重定向到 MAC 设备管理页面,以便他们可以添加他们当前登录的设备并避免再次登录,这很糟糕。
我试过的:
检测浏览器是否正在移动设备中启动,并在 onbeforeunload 中弹出警告,试图保持浏览器打开。
打开新浏览器window,指向重定向URL,当检测到身份验证成功时(基本上我们自己管理重定向)。
执行选项 2,然后在重定向的 URL
上执行选项 1
什么不起作用:
要求用户禁用其设备上的强制门户选项。不试图将普通用户指向高级控件。
正在创建一个开放网络来访问 MAC 管理器,它必须经过一些身份验证。
目前的解决方案:
我们对这个解决方案不满意,但现在我们只是要求用户通过网络进行身份验证,然后打开浏览器并转到用户用于手动添加的基本登录门户页面(非网络身份验证)他们无法连接的设备(如打印机、游戏设备等)。虽然这可行,但用户必须登录,打开浏览器,手动输入 url,然后再次登录,这很痛苦。
这不是人们没有 运行 进入的问题,see here,我只是无法从 运行 进入的任何人那里找到解决方案问题。当然,在这种情况下,有一些方法可以利用 javascript 或其他方法来保持浏览器打开。如果没有,有人有更好的管理方法吗?
这似乎是自 Lollipop (5.0) 发布以来 Android 设备中新的强制门户行为。
我们尚未发现解决方法。如果有禁用自动关闭的明确方法,它可能只记录在此处可用的 Android 代码库中(我一直在寻找,但还没有找到任何确定的东西):
https://android.googlesource.com/platform/frameworks/base
仅供参考,我们还注意到 Android 使用 CloudFront CDN 进行强制网络检测。我们的强制门户解决方案最初将 CloudFront 用于资产,因此我们必须在预授权 ACL 中将 CloudFront 子网列入白名单。将 CloudFront 列入白名单随后导致最近 Android 设备上的强制网络检测失败。我们不得不放弃 CloudFront CDN 以恢复 Android 设备的强制门户功能。
您为什么不在身份验证后保持打开的强制门户?您始终可以允许访问每个站点 除了 强制检查站点。
已在所有版本中测试并运行 Android 和 iOS。 如果你需要从默认浏览器访问 cookies/shared 存储(不是强制 ios/android 沙盒浏览器),你必须在身份验证之前跳出它。
我们通过添加防火墙规则阻止,设法使 UAM 浏览器/强制门户浏览器在 lollipop 上保持打开状态:
- clients3.google.com
- clients1.google.com ,
- android.clients.google.com
- connectivitycheck.android.com
- connectivitycheck.gstatic.com
因此,在用户通过身份验证后,UAM/Captive Browser 保持打开状态。
您可以根据需要保持 UAM 打开,您可以通过调用反向代理 204 重定向到 google 的连接页面来关闭它。