2014-04-17 5 views
1

Je suis dans une situation où je suis sur un réseau d'entreprise qui a un point d'accès sans fil qui nécessite une connexion sécurisée pour accéder au réseau. Après ~ 30 minutes de temps d'inactivité, il demandera à l'utilisateur de s'authentifier à nouveau.Android: Timeout de session de point d'accès sans fil et erreurs HostnameValidation

Dans mon application (en utilisant retrofit + okhttp), le message "votre session a expiré" se manifeste sous la forme d'une exception "java.io.IOException: Hostname 'example.com" n'a pas été vérifiée ". Une inspection plus approfondie montre que 'example.com' est vérifié par rapport au cert du point d'accès sans fil et que le seul domaine valide associé au cert est le domaine du point d'accès (securelogin.arubanetworks.com). C'est ce qui déclenche une exception. Si je quitte l'application, lancez le navigateur, ré-authentifier w/le point d'accès et revenir à l'application, je reçois toujours le même nom d'hôte non vérifié problème. Cela me laisse avec deux questions:

1) Y a-t-il un meilleur moyen de détecter cette situation de timeout autre que d'attendre et de gérer l'IOException?

2) Je n'arrive pas à faire en sorte que le client http cesse d'essayer de vérifier le nom d'hôte par rapport au CERT des points d'accès une fois que la session a expiré. Y at-il un moyen de récupérer une fois que l'utilisateur s'est ré-authentifié (via un navigateur) sans redémarrer l'application?

Répondre

1
  1. Il n'y a pas de bonne façon de gérer les points d'accès captifs. Le mieux que je puisse penser est d'héberger du contenu connu à une adresse HTTP connue (http://somedomainyoucontrol.com) et de voir si les requêtes HTTP vers ce domaine sont redirigées hors-domaine. Cela semble être ce que Mac OS X fait pour détecter les points d'accès captifs; il utilise une page sur apple.com. Je suppose que c'est un cache DNS, pas le client HTTP, qui vous causera du chagrin lors de la nouvelle tentative. Le client HTTP ne conservera pas de connexion une fois l'établissement de liaison SSL échoué. Vous devez configurer le DNS du portail captif pour définir une durée de vie très courte.