Le jeton Web JSON (JWT) bénéficie d’un jeton de session de firebase database

Avec un système de jetons de session de firebase database, je pourrais avoir une connexion utilisateur avec un nom d’utilisateur / mot de passe, le serveur pourrait générer un jeton (un uuid par exemple) et le stocker dans la firebase database. Chaque demande à partir de là inclurait le jeton et le serveur rechercherait si le jeton est valide et à quel utilisateur il appartient.

En utilisant JWT, il ne serait pas nécessaire de sauvegarder quoi que ce soit dans la firebase database par rapport à la session / jetons grâce à la combinaison de la clé secrète conservée sur le serveur et du jeton signé par le client avec chaque requête.

C’est bien, mais en plus de sauvegarder une firebase database, vérifiez chaque requête (ce qui serait rapide de toute façon, car il suffit de vérifier une table de hachage), mais les avantages de l’utilisation de JWT ne sont pas clairs. Pouvez-vous quelqu’un familier avec cela expliquer? Ignorons les cookies, c’est spécifiquement un jeton personnalisé à la firebase database tel que décrit ci-dessus et JWT que je tente de comparer et de comprendre les avantages .

La principale différence est la taille de stockage de session et le travail de recherche requirejs à partir du serveur:

  • Du côté du serveur, JWT stocke une clé unique en mémoire (ou dans un fichier de configuration) appelée clé secrète . Cette clé a deux objectives: elle permet de créer de nouveaux jetons chiffrés et fonctionne comme une clé maîtresse qui “ouvre tous les verrous” – ou dans la réalité, vérifie tous les jetons. En conséquence, le serveur répond beaucoup plus rapidement aux demandes d’authentification, car peu importe si deux ou deux millions d’utilisateurs sont connectés – le même nombre d’enregistrements (un, cette clé de serveur) sera utilisé pour authentifier toutes les demandes des clients.

  • L’authentification traditionnelle qui stocke les sessions utilisateur dans une firebase database crée un enregistrement dans la firebase database pour chaque utilisateur, ce qui se traduit par plusieurs clés . Donc, si vous avez deux millions d’utilisateurs connectés, le serveur créera deux millions d’enregistrements et à chaque demande de client, le serveur devra localiser l’enregistrement de session approprié dans la firebase database *.

JWT laisse au client le soin de stocker et de gérer l’ensemble de l’object session / utilisateur. En fait, cela a beaucoup plus de sens, car chaque client ne gère que ses propres données, ce qui n’entraîne pas non plus de surcharge pour le client.

En ce qui concerne ce que vous avez écrit dans votre dernier paragraphe, ce ne sont pas seulement les appels db que nous enregistrons ici. JWT est en fait beaucoup plus évolutif en raison de sa nature indépendante et légère, il n’échoue pas lorsque les requêtes d’authentification s’emstacknt et permet au serveur de gérer l’authentification dans les périphériques et les services sans gérer les sessions côté serveur.

En matière de sécurité, les sessions de firebase database ont l’avantage: elles peuvent être plus sécurisées grâce à cette latence et sont également moins vulnérables au détournement de session après la déconnexion de l’utilisateur.

* La méthode des sessions stockées db peut être optimisée avec une mise en cache efficace et en stockant uniquement l’identifiant de session (par opposition à l’object utilisateur entier) dans un serveur clé / valeur rapide tel que Redis. Cela dit, je choisirais toujours la méthode JWT plutôt que la db pour la plupart des cas.

Un jeton basé sur Json (JWT) surmonte les problèmes suivants:

  1. Problèmes liés aux mobiles: les applications mobiles natives semblent avoir des problèmes avec les cookies, donc si nous devons interroger une API distante, peut-être que l’authentification de session n’est pas la meilleure solution.
  2. Problèmes CSRF: Si vous suivez la méthode des cookies, vous devez avoir CSRF pour éviter les requêtes intersites.

Mais JWT n’utilise pas de sessions, n’a pas de problèmes avec le mobile, il n’a pas besoin de CSRF et fonctionne très bien avec CORS. Si vous n’avez pas de jeton valide, vous ne pouvez rien faire.

Encore une fois, ce jeton est stocké dans le stockage de stockage / session local du client afin que vous puissiez également transmettre ces jetons à d’autres clients, mais vous devez partager les mêmes informations d’identification que vous avez utilisées pour générer ce JWT.