2016-06-13 15 views
0

Ich habe eine Xamarin.Forms iOS/Android App und muss den Benutzer gegen eine Microsoft Azure B2C AD authentifizieren.Abmelden funktioniert nicht bei Verwendung von Microsoft Authentication Library (MSAL)

Ich habe den Microsoft.Identity.Client NuGet hinzugefügt und diesen für die Authentifizierung verwendet.

Login funktioniert einwandfrei und ich kann das zurückgegebene Token verwenden, um einen eigenen gehosteten Azure-Dienst aufzurufen.

Das Problem ist, dass wenn ich versuche, den Benutzer abmelden, es nicht wie erwartet funktioniert.

Wenn sich der Benutzer abmeldet und unmittelbar danach die App beendet, wird beim nächsten Start der App der Anmeldebildschirm wie erwartet angezeigt.

Um die App auf iOS zu töten, gehe ich zum App-Switcher mit Doppelklick auf die Home-Taste und wische auf.

Aber wenn der Benutzer nicht die App killt, sondern stattdessen meine Login-Taste drückt (löst einen Aufruf von AcquireTokenAsync()), wird der Anmeldebildschirm NICHT von Microsoft.Identity.Client angezeigt, stattdessen wird sofort ein gültiges Token zurückgegeben und die App kann dieses Token für Serviceaufrufe verwenden, dh es ist ein gültiges Token.

Beim nächsten Start der App ist das Token nicht mehr vorhanden und der Anmeldebildschirm erscheint.

Das seltsame ist, dass, wenn ich die Probe von GitHub/active-directory-b2c-xamarin-native laufen sehe ich das gleiche Verhalten. Also vermute ich, dass es sich um einen Fehler in der MSAL-Komponente von Microsoft handelt.

Nach der Probe Abmeldung einfach mit Aufruf

PublicClientApplication.UserTokenCache.Clear(PublicClientApplication.ClientId); 

Ich habe auch versucht, mit dem Hinzufügen von

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

ohne Änderung durchgeführt werden soll.

Irgendwelche Vorschläge?

+0

Ich habe gerade den uiOptions Parameter auf 'AcquireTokenAsync () 'von' UiOptions.SelectAccount' zu 'UiOptions.ForceLogin' und es ist etwas unpraktischer für den Benutzer, aber es stellt sicher, dass der Login-Bildschirm angezeigt wird. –

Antwort

1

Dies geschieht, weil der Dienst bestimmte Funktionen nicht unterstützt, die zur Abmeldung eines Benutzers führen würden. Dies ist immer noch in Arbeit.

+0

Sie sagen also, dass ich den Benutzer effektiv nicht abmelden kann, da sich MSAL im aktuellen Alpha-Status befindet? –

+2

Für jetzt, ja. Aber das wollen wir früher als später unterstützen. –

+0

@ KanishkPanwar-MSFT, Wird es auf MSAL-Ebene oder auf Endpoints v2-Ebene nicht unterstützt? – Konstantin

Verwandte Themen