web-dev-qa-db-fra.com

Faut-il stocker les JWT dans la base de données?

Lors de la création/attribution des JWT aux utilisateurs, devrions-nous également les stocker dans nos bases de données?

Les inconvénients/inconvénients du stockage des jetons dans la base de données seraient que toutes les données de la charge utile du jeton JWT sont déjà stockées dans la base de données, donc le stockage du jeton stockera les données redondantes, la vérification des JWT se fait également via les clés de signature. qui ne changent pas pendant une période plus longue mais,

Le positif/pro que je peux voir de stocker le jeton JWT dans notre base de données serait que même après l'attribution du jeton, nous aurons le pouvoir d'invalider ou de désactiver les jetons existants avant même l'expiration.

L'un des cas d'utilisation pour le stockage des jetons serait que les jetons seront invalidés lors d'une mise à jour du schéma d'authentification et que tous les anciens jetons doivent être invalidés.

5
Anshul Sahni

Le positif/pro que je peux voir de stocker le jeton JWT dans notre base de données serait que même après avoir attribué le jeton, nous aurons le pouvoir d'invalider ou de désactiver les jetons existants avant même l'expiration.

Cela ne se produit que si vous validez le jeton par rapport à la base de données, auquel cas pourquoi utiliser JWT? L'intérêt d'avoir un jeton autonome et signé est que vous n'avez pas besoin d'aller dans la base de données pour vérifier que l'utilisateur est connecté.

9
guest

Vous avez donc implémenté OAuth2 mais vous avez une spécification de "sécurité" des années 90 qui dit

"la session de l'utilisateur doit expirer après 15 min"

ou

"Lorsque l'utilisateur clique sur se déconnecter, sa session n'est plus valide"

Une façon de contourner ce problème consiste à implémenter la révocation des jetons. Il existe un certain nombre de façons d'y parvenir, mais le stockage des jetons sur une base de données et leur marquage révoqué est probablement le plus simple pour une petite configuration.

Le problème de la révocation est qu'elle nécessite une cohérence instantanée sur tous vos serveurs de ressources, exactement ce dont vous essayez de vous éloigner!

Si vous pouvez vendre une expiration de jeton d'accès court comme une solution supérieure, c'est parfait, sinon vous êtes coincé avec ce qui est essentiellement un hack.

1
Ewan