2016-06-13 2 views
0

J'ai une application iOS/Android Xamarin.Forms et je dois authentifier l'utilisateur par rapport à un Microsoft Azure B2C AD.La déconnexion ne fonctionne pas avec Microsoft Authentication Library (MSAL)

J'ai ajouté le Microsoft.Identity.Client NuGet et l'utiliser pour l'authentification. La connexion fonctionne correctement et je suis capable d'utiliser le jeton retourné pour appeler notre propre service hébergé Azure.

Le problème est que lorsque j'essaie de me déconnecter de l'utilisateur, cela ne fonctionne pas comme prévu.

Si l'utilisateur se déconnecte et immédiatement après avoir supprimé l'application, la prochaine fois que l'application est démarrée, l'écran de connexion s'affiche comme prévu.

Pour tuer l'application sur iOS, je vais à app-switcher avec double-cliquez sur le bouton d'accueil et le glisser vers le haut.

Mais si l'utilisateur ne tue pas l'application, mais appuie à la place sur mon bouton de connexion (déclenche un appel à AcquireTokenAsync()) l'écran de connexion n'est PAS présenté par Microsoft.Identity.Client mais un jeton valide est immédiatement renvoyé et l'application est capable d'utiliser ce jeton pour les appels de service, c'est-à-dire que c'est un jeton valide.

La prochaine fois que l'application est lancée, le jeton n'est plus là et l'écran de connexion apparaît.

L'étrange c'est que lorsque je cours l'échantillon de GitHub/active-directory-b2c-xamarin-native je vois le même comportement. Donc je pense que c'est un bug dans le composant MSAL de Microsoft.

Selon l'échantillon devrait être simplement fermeture de session fait d'appeler

PublicClientApplication.UserTokenCache.Clear(PublicClientApplication.ClientId); 

J'ai aussi essayé avec l'ajout

foreach (var user in PublicClientApplication.Users) 
{ 
    user.SignOut(); 
} 

sans aucun changement.

Des suggestions?

+0

Je viens de modifier le paramètre uiOptions à 'AcquireTokenAsync () 'de' UiOptions.SelectAccount' à 'UiOptions.ForceLogin' et c'est un peu plus gênant pour l'utilisateur mais cela garantit que l'écran de connexion est affiché. –

Répondre

1

Cela se produit car le service ne prend pas en charge certaines fonctionnalités qui entraîneraient la déconnexion d'un utilisateur. Ceci est encore un travail en cours.

+0

Donc vous dites que effectivement je ne peux pas déconnecter l'utilisateur car le MSAL est dans son état alpha actuel? –

+2

Pour l'instant, oui. Mais c'est quelque chose que nous voulons soutenir plus tôt que plus tard. –

+0

@ KanishkPanwar-MSFT, Est-il non supporté au niveau MSAL ou au niveau des terminaux v2? – Konstantin