Devo risolvere un problema in cui la chiamata HTTPS iniziale (o forse solo) a un sito Web è bloccata da un captive portal, non gestito da me. La risoluzione è stata quella di chiedere all'utente di navigare verso un sito "http" per poter dire allo stack del software di accedere tramite il portale.
Da una prospettiva dell'app vedo che il sito previsto è:
- SSL non è disponibile (nessuno dei codici di risposta ICMP)
- SSL ha un certificato non attendibile dal portale
- SSL ha un certificato non attendibile e contenuto inatteso (login al portale)
Ognuno di questi comportamenti si traduce in un risultato diverso da parte di vari stack software, sistemi operativi e software di home-brew.
Qual è il modo più compatibile di gestire i portali in cattività quando:
- Accesso a un sito Web che offre servizi REST protetti, app SPA o simili?
- Richiesta da un'app su iOS, Android che sfrutta il framework HTTP integrato per quella piattaforma
- Richiesta da un'app che non fa leva sul framework HTTP della piattaforma, ma utilizza invece OpenSSL, BouncyCastle o Monotouch / MonoDroid
- Richiesta da un PC desktop (OSX o Windows)
w.r.t. # 4, so che OSX tenterà di contattare link per determinare se un reindirizzamento 301/302
è a posto. .. o se il portale sostituisce semplicemente il contenuto direttamente tramite MITM / Content Injection.