Je suis l'auteur d'une bibliothèque de nœuds qui gère l'authentification dans une certaine profondeur, express-stormpath , donc je vais apporter des informations ici.
Tout d'abord, les JWT ne sont généralement PAS cryptés. Bien qu'il existe un moyen de chiffrer les JWT (voir: JWE ), ce n'est pas très courant dans la pratique pour de nombreuses raisons.
Ensuite, toute forme d'authentification (utilisant ou non des JWT) est soumise à des attaques MitM (man-in-the-middle). Ces attaques se produisent lorsqu'un attaquant peut CONSULTER le trafic DE VOTRE RÉSEAU lorsque vous effectuez des requêtes sur Internet. C'est ce que peut voir votre FAI, la NSA, etc.
C'est ce que SSL aide à éviter: en chiffrant le trafic RÉSEAU de votre ordinateur -> un serveur lors de l'authentification, un tiers qui surveille votre trafic réseau NE peut PAS voir vos jetons, mots de passe ou quoi que ce soit à moins qu'ils ne soient en mesure de le faire pour obtenir une copie de la clé SSL privée du serveur (peu probable). C'est la raison pour laquelle SSL est OBLIGATOIRE pour toutes les formes d'authentification.
Disons cependant que quelqu'un est en mesure d'exploiter votre SSL et est en mesure d'afficher votre jeton: la réponse à votre question est que OUI , l'attaquant sera en mesure d'utiliser ce jeton pour usurper votre identité et faire des demandes à votre serveur.
Maintenant, c'est là qu'interviennent les protocoles.
Les JWT ne sont qu'un standard pour un jeton d'authentification. Ils peuvent être utilisés pour à peu près n'importe quoi. La raison pour laquelle les JWT sont plutôt cool est que vous pouvez y incorporer des informations supplémentaires, et vous pouvez valider que personne ne les a gâchées (signature).
TOUTEFOIS, les JWT eux-mêmes n'ont rien à voir avec la «sécurité». À toutes fins utiles, les JWT sont plus ou moins la même chose que les clés API: juste des chaînes aléatoires que vous utilisez pour vous authentifier auprès d'un serveur quelque part.
Ce qui rend votre question plus intéressante, c'est le protocole utilisé (très probablement OAuth2).
La façon dont OAuth2 fonctionne est qu'il a été conçu pour donner aux clients des jetons TEMPORAIRES (comme les JWT!) Pour l'authentification pour une COURTE PÉRIODE DE TEMPS SEULEMENT!
L'idée est que si votre jeton est volé, l'attaquant ne peut l'utiliser que pendant une courte période.
Avec OAuth2, vous devez vous réauthentifier de temps en temps avec le serveur en fournissant votre nom d'utilisateur / mot de passe OU les informations d'identification de l'API, puis en récupérant un jeton en échange.
Parce que ce processus se produit de temps en temps, vos jetons changent fréquemment, ce qui rend plus difficile pour les attaquants de vous imiter constamment sans avoir de gros ennuis.
J'espère que cela aide ^^