2017-06-30 1 views
0

Derzeit verwende ich ID4, asp.net Kern und eckigen 2. Alles funktioniert gut, aber ich habe ein Problem, wenn wir viele Registerkarten im Browser öffnen . Dann melden wir uns auf einer Registerkarte ab, aber auf anderen Registerkarten bleiben Token- und Aufruf-API weiterhin erfolgreich. Können wir Token erzwingen oder validieren und auf allen Registerkarten zur Anmeldeseite zurückkehren?Identity Server 4 + asp.net Kern: Logout auf mehreren Tabs des Browsers

Mein Code, um sich abzumelden auf Server

await _signInManager.SignOutAsync(); 

    HttpContext.User = new ClaimsPrincipal(new ClaimsIdentity()); 

    var logout = await _interaction.GetLogoutContextAsync(model.LogoutId); 

    return Redirect(logout?.PostLogoutRedirectUri); 

Danke,

+0

teilen Sie bitte Ihren Abmeldecode (mindestens Server-Seite) – user1859022

Antwort

2

Sie können nicht JWTs widerrufen: einmal ausgestellt sie gültig sind, bis sie ablaufen. Wenn Sie also Identity Server zum Ausgeben von JWT-Zugriffstoken verwenden, ist das, was Sie fragen, nicht möglich, solange etwas das JWT hat (und es nicht abgelaufen ist), dann kann es verwendet werden, um auf Ihre Ressourcen zuzugreifen .

Stattdessen können Sie zur Verwendung von Reference Tokens wechseln, die nicht eigenständig sind und bei jeder Verwendung die empfangende Ressource (wie Ihre API) dazu veranlassen, sie mit dem IdSvr zu überprüfen. Eine der Auswirkungen davon ist, dass Sie Ihre Zugriffstoken dann widerrufen können, was bedeutet, dass es keine Rolle spielt, ob andere Tabs denken, dass sie Zugriffstoken haben. Wenn sie es versuchen und verwenden, weiß das IdSvr, dass sie nicht mehr gültig sind. Wenn Sie diese Route hinuntergehen, müssen Sie nun Ihre Zugriffstoken beibehalten, und jeder geschützte Anruf an Ihren Client beinhaltet eine Rückkanal-Kommunikation mit Ihrem IdSvr.

Verwandte Themen