Necesito solucionar un problema por el cual la llamada HTTPS inicial (o quizás la única) a un sitio web está bloqueada por un portal cautivo, no administrado por mí. La resolución ha sido pedirle al usuario que navegue a un sitio "http" único para indicar a la pila de software que inicie sesión a través del portal.
Desde la perspectiva de la aplicación, veo que el sitio esperado es:
- SSL no está disponible (ninguno de los códigos de respuesta ICMP)
- SSL tiene un certificado no confiable del portal
- SSL tiene un certificado no confiable y contenido inesperado (inicio de sesión en el portal)
Cada uno de esos comportamientos resulta en un resultado diferente por varias pilas de software, sistemas operativos y software de elaboración doméstica.
¿Cuál es la forma más compatible de lidiar con los portales cautivos cuando:
- ¿Accediendo a un sitio web que ofrece servicios REST protegidos, aplicaciones SPA o similares?
- Solicitando desde una aplicación en iOS, Android que aprovecha el marco HTTP incorporado para esa plataforma
- Solicitar desde una aplicación que no aproveche el marco HTTP de la plataforma, sino que utiliza OpenSSL, BouncyCastle o Monotouch / MonoDroid
- Solicitud desde una PC de escritorio (OSX o Windows)
w.r.t. # 4, sé que OSX intentará ponerse en contacto con enlace para determinar si existe una redirección 301/302
. .. o si el portal simplemente reemplaza el contenido directamente a través de un MITM / Content Injection.