Ich bin der Autor einer Knotenbibliothek, die sich mit der Authentifizierung in einer gewissen Tiefe befasst, Express-Stormpath , daher werde ich hier einige Informationen einbringen .
Zunächst einmal werden JWTs normalerweise NICHT verschlüsselt. Es gibt zwar eine Möglichkeit, JWTs zu verschlüsseln (siehe: JWEs ), dies ist jedoch in der Praxis aus vielen Gründen nicht sehr häufig.
Als nächstes unterliegt jede Form der Authentifizierung (mit oder ohne JWTs) MitM-Angriffen (Man-in-the-Middle). Diese Angriffe treten auf, wenn ein Angreifer IHREN NETZWERK-Datenverkehr ANZEIGEN kann, während Sie Anfragen über das Internet stellen. Dies kann Ihr ISP sehen, die NSA usw.
Dies ist, was SSL verhindert: Durch die Verschlüsselung Ihres NETWORK-Datenverkehrs von Ihrem Computer -> eines Servers bei der Authentifizierung kann ein Dritter, der Ihren Netzwerkverkehr überwacht, Ihre Token, Kennwörter oder ähnliches NICHT sehen, es sei denn, er ist in der Lage um eine Kopie des privaten SSL-Schlüssels des Servers zu erhalten (unwahrscheinlich). Dies ist der Grund, warum SSL für alle Arten der Authentifizierung obligatorisch ist.
Nehmen wir jedoch an, dass jemand Ihr SSL ausnutzen und Ihr Token anzeigen kann: Die Antwort auf Ihre Frage lautet: JA , der Angreifer kann dieses Token verwenden, um sich als Sie auszugeben und Anforderungen an Ihren Server zu stellen.
Hier kommen nun Protokolle ins Spiel.
JWTs sind nur ein Standard für ein Authentifizierungstoken. Sie können für so ziemlich alles verwendet werden. Der Grund, warum JWTs so cool sind, ist, dass Sie zusätzliche Informationen in sie einbetten und überprüfen können, ob niemand damit herumgespielt hat (Signieren).
JWTs selbst haben jedoch nichts mit "Sicherheit" zu tun. In jeder Hinsicht sind JWTs mehr oder weniger dasselbe wie API-Schlüssel: nur zufällige Zeichenfolgen, mit denen Sie sich irgendwo bei einem Server authentifizieren.
Was Ihre Frage interessanter macht, ist das verwendete Protokoll (höchstwahrscheinlich OAuth2).
Die Funktionsweise von OAuth2 besteht darin, dass es Clients vorübergehend temporäre Token (wie JWTs!) Zur Authentifizierung nur für einen KURZEN ZEITRAUM zur Verfügung stellt!
Die Idee ist, dass der Angreifer den gestohlenen Token nur für kurze Zeit verwenden kann.
Bei OAuth2 müssen Sie sich von Zeit zu Zeit erneut beim Server authentifizieren, indem Sie Ihren Benutzernamen / Ihr Kennwort oder Ihre API-Anmeldeinformationen angeben und anschließend ein Token zurückerhalten.
Da dieser Prozess von Zeit zu Zeit stattfindet, ändern sich Ihre Token häufig, was es für Angreifer schwieriger macht, sich ständig als Sie auszugeben, ohne große Probleme zu haben.
Hoffentlich hilft das ^^