Cómo lidiar con iOS Captive Network Support

Entonces, estoy construyendo un portal de Internet para huéspedes para un punto de acceso público en un hotel. Esto significa que el portal se sirve a través de una Network Access Gateway (un Nomadix) que networkingirige todo el tráfico saliente a la página del portal. El portal debe poder configurar cookies en el browser para que los invitados puedan volver a iniciar session de forma automática después de que expiren el time de espera inactivo.

El problema:
Los dispositivos iOS4 + y OS X (10.7+) tienen una function llamada Soporte de networking cautiva. Esta característica escanea continuamente los SSID de Wifi, se conecta a ellos y se curva en http://www.apple.com/library/test/success.html para ver si el dispositivo está conectado a Internet. Si no obtiene la respuesta de éxito, estos dispositivos se abren y se llaman Portal de networking cautiva. Este portal no es una versión verdadera de Safari Mobile y no puede save cookies en este browser.

Me gustaría una respuesta autorizada a la siguiente pregunta:

Con javascript / markup del lado del cliente, ¿puedo?

A) Guarde las cookies en el browser de networking cautiva (emergente)

B) Impedir que el browser de networking cautiva aparezca en primer lugar sin include en la list blanca apple.com

Esto es un poco el sitio incorrecto en la networking StackExchange para cosas de sysadmin; es posible que desee probar ServerFault . En mi experiencia como usuario, hay portales Wi-Fi por ahí que administran la reauthentication sin cookies; tal vez ServerFault puede ayudarlo a encontrar tales.

Dicho esto, existe una posible solución en cuanto al desarrollo del lado del cliente de iOS: hay API de CaptiveNetwork que permiten que una aplicación de terceros informe al sistema que se asume la responsabilidad de autenticar SSID particulares, suprimiendo la hoja web. Probablemente no sea una solución deseable, ya que requiere que sus usuarios instalen una aplicación, pero está ahí.

Puede probar a servir " http://www.apple.com/library/test/success.html " localmente cuando se detecta un dispositivo iOS. Esto hará que el CNA no aparezca y entonces el usuario podría iniciar session a través del safari mobile, en el que puede save cookies.