Ich möchte JWT-basierte Authentifizierung in unsere neue REST-API implementieren. Da jedoch das Ablaufdatum im Token festgelegt ist, ist es möglich, es automatisch zu verlängern? Ich möchte nicht, dass Benutzer sich nach jedem X Minuten erneut anmelden müssen, wenn sie die Anwendung in diesem Zeitraum aktiv genutzt haben. Das wäre ein großer UX-Fehler.
Aber die Verlängerung des Ablaufdatums führt zu einem neuen Token (und der alte bleibt gültig, bis er abläuft). Und das Generieren eines neuen Tokens nach jeder Anfrage erscheint mir albern. Es klingt wie ein Sicherheitsproblem, wenn mehr als ein Token gleichzeitig gültig ist. Natürlich könnte ich das alte verwendete Token über eine Blacklist ungültig machen, aber ich müsste die Token speichern. Und einer der Vorteile von JWT ist, dass kein Speicherplatz benötigt wird.
Ich fand heraus, wie Auth0 es gelöst hat. Sie verwenden nicht nur das JWT-Token, sondern auch ein Refresh-Token: https://auth0.com/docs/tokens/refresh-tokens
Aber wiederum müsste ich zur Implementierung dieser Lösung (ohne Auth0) Refresh-Tokens speichern und deren Ablaufdatum verwalten. Was wäre dann der eigentliche Nutzen? Warum nicht nur ein Token (nicht JWT) haben und das Ablaufdatum auf dem Server behalten?
Gibt es andere Optionen? Ist die Verwendung von JWT für dieses Szenario nicht geeignet?