Asp.net Identity Expire Session Cookie

Wir verwenden MVC 5.2 und das ASP.NET Identity framework für die Authentifizierung mit einem Formularauthentifizierungsbildschirm (Benutzer- und Kennwortkombination) und Identität wird mithilfe eines Cookies beibehalten. Ich habe in meiner Startmethode die Konfiguration für das Identitätsframework so vorgenommen, dass das Ablaufdatum des Authentifizierungscookies auf 30 Tage festgelegt wird. Dies funktioniert einwandfrei, wenn der Benutzer die Option "Erinnere mich an mich" auswählt (IsPersistent = true). Wenn IsPersistent = false (der Benutzer wählt "Remember me" nicht aus), wird standardmäßig ein Sitzungscookie erstellt. Dieses Sitzungscookie funktioniert hervorragend in Internet Explorer und auch in FireFox. Wenn der Browser geschlossen wird, geht das Cookie verloren. In Chrome und Safari (und möglicherweise auch in anderen Browsern) gibt es Optionen, mit denen sichergestellt wird, dass Sitzungscookies nicht verloren gehen. In diesem Fall bleibt der Benutzer angemeldet, auch wenn der Browser geschlossen und erneut geöffnet wird.

Ich möchte eine Lösung finden, um sicherzustellen, dass Sitzungscookies nicht für immer gespeichert, sondern innerhalb einer Stunde gelöscht werden. Möglicherweise kann ich dies feststellen, indem ich überprüfe, ob das Konto für X Minuten / Stunden nicht aktiv ist und der Benutzer sich nie für "Angemeldet bleiben" entschieden hat. Nach Ablauf dieser Zeitspanne wird die Identität des Benutzers bei der nächsten Anforderung "abgelehnt".

Hat jemand in seiner ASP.NET Identity-Implementierung eine Problemumgehung erstellt, um sicherzustellen, dass Sitzungscookies im Back-End nach x-Zeit abgelaufen sind, oder gibt es möglicherweise eine bessere Möglichkeit, diese Einschränkung zu umgehen? Möglicherweise ist es möglich, dies mithilfe einer benutzerdefinierten Implementierung des CookieAuthenticationProviders zu tun oder dem Benutzeranspruch ein Ablaufdatum und eine Ablaufzeit zu übergeben, die irgendwo im ValidateIdentity-Prozess überprüft werden könne

Irgendwelche Ideen wären toll. Vielen Dank im Voraus, -Igor

Edit - Weitere Informationen: Meine Authentifizierungsimplementierung hat 2 grundlegende "Modi" (ich kann mir im Moment kein besseres Wort vorstellen). Meine Implementierung ist für ein einfaches Benutzername / Passwort-Formular mit einem Kontrollkästchen "Erinnere dich an mich". Der Kontrollkästchenwert wird an die IsPersistent-Eigenschaft des AuthenticationProperties-Objekts übergeben, das an die AuthenticationManager :: SignIn-Methode übergeben wird.

User möchte sich an mich erinnern, wodurch ein langlebiger Cookie mit einem Ablauf von 30 Tagen erstellt wird, der mit einem gleitenden Ablauf festgelegt wird. Auf diese Weise kann der Benutzer zwischen den Browsersitzungen authentifiziert bleiben und es tritt keine Zeitüberschreitung aufgrund von Inaktivität auf, mit der Ausnahme, dass die Website länger als 30 Tage nicht besucht wird. Die Einstellungen in meiner owin-Startmethode geben an, dass die Ablaufzeit für das Cookie 30 Tage beträgt (CookieAuthenticationOptions.ExpireTimeSpan auf 30 Tage festgelegt). Dies funktioniert unabhängig von der Browser-Plattform (soweit ich das beurteilen kann).

User möchte sich nicht an mich erinnern. Das erwartete Verhalten ist, dass ein Sitzungscookie erstellt wird. Wenn ein Browser geschlossen wird, wird das Sitzungscookie aus dem Browser entfernt. Diessollt Stellen Sie sicher, dass der Benutzer beim nächsten Start des Browsers nicht authentifiziert wird. Dies ist besonders wichtig, wenn ein freigegebenes Gerät wie ein öffentlicher Computer verwendet wird. Das Problem ist, dass nicht alle Browser Sitzungscookies immer löschen. Einige lassen sie absichtlich, wenn eine Browsereinstellung aktiviert ist (Chrome ist ein gutes Beispiel). Ein Sitzungscookie hat kein Ablaufdatum und keine Ablaufzeit, daher hat CookieAuthenticationOptions.ExpireTimeSpan hier keine Auswirkungen. Hier suche ich Rat, denn ich bin mir sicher, dass ich nicht der erste sein kann, der darauf gestoßen ist. Es gibt wahrscheinlich eine Möglichkeit, dieses Verhalten sicherer zu machen, da die Alternative darin besteht, nichts zu tun und möglicherweise einen Sitzungscookie (der niemals abläuft!) Im Browser zu hinterlassen.

Weitere Informationen zu Chrome- und Sitzungscookies finden Sie unter diesem Link.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage