62 votes

SFAuthenticationSession / ASWebAuthenticationSession et déconnexion

J'ai l'intention de basculer d'une application à partir de l'ancien OAuth flux avec l' SFSafariViewController pour le nouveau flux avec iOS 11 SFAuthenticationSession. La journalisation n'est pas un problème, le transfert vers la nouvelle API ne me fallut que quelques minutes à mettre en œuvre. Cependant la déconnexion m'a dérouté.

Comment?

Je ne trouve pas de mention de vouloir offrir la possibilité de se déconnecter n'importe où dans les docs. L'aide de l'ancien SFSafariViewController d'invalider les cookies? Non, ils ne sont pas partagé avec SFAuthenticationSession. Dès que je redémarre la session d'authentification de l'utilisateur est automatiquement connecté et il n'y a pas moyen de sortir. Donc comment faire pour activer la déconnexion? Ou suis-je simplement donnant sur quelque chose de complètement évident?

Mise à jour: J'ai trouvé une voie "qui fonctionne" dans un sens technique, mais c'est dingue pour l'utilisateur: Ouvrir un nouveau SFAuthenticationSession sur la page de déconnexion qui efface le cookie. Mais cela signifie que lors de l'enregistrement de l'affichage des alertes demande à l'utilisateur s'il souhaite connecter via le service. Si oui est sélectionné ("connexion"), le témoin de la compensation page de déconnexion est ouvert, l'utilisateur doit manuellement rejeter le point de vue, qui peut être pris par le gestionnaire d'achèvement et nous savons que nous pouvons ouvrir la connexion de vue encore une fois.. l'affichage de l'invite de connexion à la déconnexion? J'ai vraiment n'aime pas cette solution.

Des idées? Suis-je en donnant un complètement la solution la plus évidente?

Mise à jour 2: Comme on n'a aucune idée sur ce problème jusqu'à présent, ce n'est probablement pas facile. J'ai déposé une proposition d'Apple via leur outil de rapport pour clarifier la façon de gérer ce ou de le construire dans l'API si pas disponible. Affichera si je reçois une réponse.

Mise à jour 3: Après méditer la question un peu plus nous avons trouvé un autre possible (bien qu'aussi peu attractif) solution si vous pouvez influer sur la page de connexion de l'authentification OAuth fournisseur de: réaliser des cookies très courte durée. Ensuite, la page de connexion peut être ouvert sans l'ouverture de session automatique dans. Toutefois, cela tue tout le but de partager des sessions de connexion entre les applications.. et vous devez être en mesure d'influencer la page de connexion.

Mise à jour 4: Depuis iOS 12 SFAuthenticationSession est obsolète et a obtenu remplacé par ASWebAuthenticationSession. Toutefois ASWebAuthenticationSession ne change rien en ce qui concerne les journaux. Il n'est pas encore possible. Même problème qu'avant.

2voto

Martin Winter Points 800

L’une des «meilleures» solutions que j’ai rencontrées consiste à ouvrir une page de déconnexion dans le système Safari (et non un SFSafariViewController ). Étant donné que ASWebAuthenticationSession partage les cookies de manière fiable avec Safari, le cookie expiré / supprimé a également une incidence sur l'application.

Voir cette page GitHub pour plus de détails.

1voto

MNassar Points 11

Cela dépend de cookie stocke vos informations de connexion;

Si c'est un cookie de session, alors il n'est pas partagé avec Safari comme par https://developer.apple.com/documentation/authenticationservices/aswebauthenticationsession

Donc, il suffit de vider votre session locale, et les témoins seront effacés à la prochaine application se lance.

Si non, et le témoin persiste, comme Martin l'a dit ci-dessus, vous devez ouvrir Safari (pas SFSafariViewController) avec votre URL de déconnexion, puis redirection vers votre application.

S'il vous plaît laissez-moi savoir si vous avez besoin de plus d'infos. J'ai testé intensivement avec tous les 3 moyens d'authentification (ASWebAuthenticationSession, Safari, et SFSafariViewController).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X