Wie implementiert man eine sichere Session-Verwaltung in einer zustandslosen JWT-Architektur, inklusive Token-Rotation und Revocation-Lists?

Wir implementieren eine sichere Session-Verwaltung durch die Trennung von Access Tokens und Refresh Tokens. Während das Access Token kurzlebig ist und zur Autorisierung an den API-Endpunkten dient, ermöglicht das Refresh Token die Erneuerung des Zugriffs, ohne dass der Nutzer erneut seine Credentials eingeben muss.

Token-Rotation

Um das Risiko durch gestohlene Refresh Tokens zu minimieren, setzen wir auf Token-Rotation. Bei jedem Request zur Erneuerung des Access Tokens wird das aktuelle Refresh Token entwertet und ein neues Paar (Access + Refresh Token) ausgegeben.

Sollte ein bereits verwendetes Refresh Token erneut an den Server gesendet werden, detektieren wir dies als potenziellen Token-Diebstahl. In diesem Fall invalidieren wir sofort alle aktiven Sessions des betroffenen Benutzers, da wir davon ausgehen, dass sowohl der legitime Nutzer als auch ein Angreifer im Besitz des Tokens waren.

Revocation-Lists

Da JWTs per Definition zustandslos sind, ist ein sofortiger Entzug (Revocation) ohne zentralen Speicher nicht möglich. Wir lösen dies über eine Denylist in einem In-Memory-Store wie Redis.

  1. Jedes Token erhält eine eindeutige ID (jti Claim).
  2. Bei einem Logout oder einer Sicherheitswarnung wird die jti des Tokens in Redis gespeichert.
  3. Die Zeitspanne des Eintrags entspricht der verbleibenden Lebensdauer des Tokens.
  4. Der API-Gateway prüft bei jedem Request, ob die jti in der Denylist vorhanden ist.
KomponenteLebensdauerSpeicherortValidierung
Access Token5–15 MinutenMemory / Secure CookieLokal (Signatur) + Denylist
Refresh TokenTage bis WochenHttpOnly CookieDatenbank / Cache
DenylistBis Token-ExpiryRedisKey-Lookup

Diese Architektur ist ein Standardbestandteil unserer Konzepte im Bereich IT-Consulting & Digitale Strategie, um Skalierbarkeit mit hoher Sicherheit zu vereinen.

Wir raten davon ab, JWTs allein für die Session-Steuerung zu nutzen, wenn eine sofortige Session-Terminierung gefordert ist. Die Kombination aus zustandslosen Access Tokens und zustandsbehafteten Refresh Tokens ist die einzige technisch saubere Lösung, die Performance-Vorteile beibehält und gleichzeitig die volle Kontrolle über die Nutzer-Sessions ermöglicht. Wer auf eine vollständig zustandslose Architektur ohne Revocation-Layer beharrt, nimmt ein unkalkulierbares Sicherheitsrisiko in Kauf.

Sergej Wiens

Sergej Wiens

Gründer & Software Architekt