Abschied von kurzen Sitzungen – Vorschlag für den Einsatz von Service Workern zur Verbesserung der Cookie-Verwaltung im Web

William Denniss
Owen Campbell-Moore

Wir alle finden es toll, dass native Apps Sie nur einmal auffordern, sich anzumelden, und sich dann so lange an Sie erinnern, bis Sie sagen, dass Sie sich abmelden möchten. Leider funktioniert das Web nicht immer so.

Da Geräte, insbesondere Mobilgeräte, persönlicher sind und immer mehr Websites den gesamten Traffic über HTTPS senden, wodurch das Risiko von Tokendiebstahl verringert wird, sollten Websites ihre kurzlebigen Cookie-Richtlinien überdenken und nutzerfreundlichere, längere Sitzungen verwenden.

Aber auch wenn Sie die Sitzung verlängern möchten, überprüfen einige Websites die Authentifizierung des Nutzers nicht bei jeder Anfrage. Es gibt also keine Möglichkeit, das Sitzungscookie zu widerrufen, nachdem es ausgegeben wurde. Dies führt in der Regel zu kurzen Sitzungen, da sich der Nutzer häufig anmelden muss, um seine Authentifizierung noch einmal überprüfen zu können. Dadurch kann beispielsweise eine Passwortänderung vorhandene Sitzungen in einem bekannten Zeitraum ungültig machen.

Wenn Sie diesen Ansatz verwenden, haben wir eine technische Lösung, mit der Sie das zustandslose Authentifizierungscookie automatisch noch einmal validieren können. Dies funktioniert mit einem sekundären langlebigen Token, das zum Aktualisieren Ihres vorhandenen kurzlebigen Authentifizierungscookies verwendet werden kann. Durch die Nutzung des neuen Service Worker-Musters können wir regelmäßig das langlebige Token verwenden, die Authentifizierung des Nutzers prüfen (z. B. prüfen, ob er vor Kurzem sein Passwort geändert oder die Sitzung anderweitig widerrufen hat) und ein neues kurzlebiges Authentifizierungscookie ausgeben.

Ein praktischer Vorschlag für sichere lange Online-Sitzungen

In diesem Beitrag wird eine neue Technik beschrieben, die wir 2-Cookie-Handoff (2CH) vorschlagen. Wir hoffen, diesen Artikel nutzen zu können, um Feedback aus der Community zu erhalten, ob dieser Ansatz positiv erscheint, und wenn ja, um gemeinsam mit der Branche an der Dokumentation von Best Practices für den Einsatz von 2CH zu arbeiten.

Service Worker sind eine neue Technologie, die von verschiedenen Browsern wie Chrome, Firefox und Opera unterstützt und demnächst auch in Edge eingeführt wird. Sie ermöglichen es Ihnen, alle Netzwerkanfragen von Ihrer Website über einen gemeinsamen Codepunkt auf dem Client abzufangen, ohne die vorhandenen Seiten zu ändern. Auf diese Weise können Sie einen „2CH-Worker“ für angemeldete Nutzer einrichten, der alle Netzwerkanfragen Ihrer Seite abfangen und den Tokenaustausch wie bei mobilen Apps durchführen kann.

Dein Server hat meistens bereits einen Endpunkt, über den mobile Apps ein neues kurzlebiges Token abrufen. Dazu wird in der Regel das OAuth-Protokoll verwendet. Um das Muster oben im Web zu aktivieren, muss dieser Endpunkt lediglich aktualisiert werden, damit er weiß, wann er von einem Service Worker aufgerufen wird, und dann ein neues kurzlebiges Sitzungscookie zurückgeben, das so formatiert ist, wie es andere Seiten der Website bereits erwarten.

Wenn Ihr Server noch keinen solchen Endpunkt hat, kann er einen nur für die Browsersitzungsverwaltung erstellen.

Sequenz der Übergabe von zwei Cookies

Das Zwei-Token-Muster mit Service Workern folgt dem OAuth 2.0-Muster relativ eng. Wenn Sie bereits einen OAuth-Token-Endpunkt ausführen, können Sie ihn wahrscheinlich mit Service Workern für Ihre Webauthentifizierung wiederverwenden.

Sie fragen sich vielleicht auch, was passiert, wenn der Nutzer einen Browser aufruft, der keine Service Worker unterstützt. Wenn Sie den obigen Ansatz implementieren, wird es einfach keinen Unterschied und weiterhin kurze Sitzungen geben.

Wir haben einen Beispielclient und ein Back-End veröffentlicht. Wir hoffen, dass Sie es selbst ausprobieren und an einer Umfrage zur Sitzungsverwaltung teilnehmen.