Je voudrais implémenter l'authentification basée sur JWT dans notre nouvelle API REST. Mais puisque l'expiration est définie dans le jeton, est-il possible de la prolonger automatiquement? Je ne veux pas que les utilisateurs aient besoin de se connecter après toutes les X minutes s'ils utilisaient activement l'application pendant cette période. Ce serait un énorme échec UX.
Mais prolonger l'expiration crée un nouveau jeton (et l'ancien est toujours valide jusqu'à son expiration). Et générer un nouveau jeton après chaque demande me semble idiot. Cela ressemble à un problème de sécurité lorsque plusieurs jetons sont valides en même temps. Bien sûr, je pouvais invalider l'ancien utilisé en utilisant une liste noire, mais je devrais stocker les jetons. Et l'un des avantages de JWT est l'absence de stockage.
J'ai trouvé comment Auth0 l'a résolu. Ils utilisent non seulement un jeton JWT mais également un jeton d'actualisation: https://docs.auth0.com/refresh-token
Mais encore une fois, pour implémenter cela (sans Auth0), je devrais stocker des jetons de rafraîchissement et maintenir leur expiration. Quel est donc le véritable avantage? Pourquoi ne pas avoir un seul jeton (pas JWT) et conserver l'expiration sur le serveur?
Y a-t-il d'autres options? L'utilisation de JWT n'est-elle pas adaptée à ce scénario?