Ich bin der Autor einer Node-Bibliothek, die Authentifizierung in ziemlich viel Tiefe behandelt, express-stormpath, so werde ich hier mit ein paar Informationen einläuten.
Zunächst einmal sind JWTs in der Regel NICHT verschlüsselt. Während es eine Möglichkeit gibt, JWTs zu verschlüsseln (siehe:), ist dies in der Praxis aus vielen Gründen nicht sehr üblich.
Als Nächstes unterliegt jede Form der Authentifizierung (mit JWTs oder nicht) den Angriffen von MitM-Angriffen (Man-in-the-Middle). Diese Angriffe treten auf, wenn ein Angreifer Ihren Netzwerkverkehr anzeigen kann, wenn Sie Anforderungen über das Internet stellen. Dies ist, was Ihr ISP sehen kann, der NSA, etc.
Dies ist, was SSL hilft zu verhindern: durch die Verschlüsselung Ihres Netzwerkverkehrs von Ihrem Computer -> einige Server bei der Authentifizierung, eine dritte Partei, die Ihren Netzwerkverkehr überwachen kann NICHT Ihre Tokens, Passwörter oder Ähnliches sehen, es sei denn, sie sind irgendwie in der Lage, eine Kopie des privaten SSL-Schlüssels des Servers zu erhalten (unwahrscheinlich). Aus diesem Grund ist SSL für alle Arten der Authentifizierung obligatorisch.
Sagen wir aber, dass jemand in der Lage ist Ihre SSL zu nutzen und in der Lage, Ihr Token zu lesen: die Antwort auf Ihre Frage ist, dass JA, der Angreifer wird Lage sein, diese Token verwenden Sie zum Imitieren und stellen Sie Anfragen an Ihren Server.
Nun, dies ist, wo Protokolle kommen.
JWTs ist nur ein Standard für eine Authentifizierungs-Token. Sie können für so ziemlich alles verwendet werden. Der Grund, warum JWTs so cool sind, ist, dass Sie zusätzliche Informationen darin einbetten können, und Sie können bestätigen, dass niemand damit zu tun hat (Signieren).
JWTs selbst haben jedoch nichts mit Sicherheit zu tun. Für alle Absichten und Zwecke sind JWTs mehr oder weniger dasselbe wie API-Schlüssel: nur zufällige Zeichenfolgen, die Sie verwenden, um sich irgendwo gegen einen Server zu authentifizieren.
Was Ihre Frage interessanter macht, ist das verwendete Protokoll (höchstwahrscheinlich OAuth2).
Die Funktionsweise von OAuth2 besteht darin, dass es den Clients TEMPORARY-Token (wie JWTs!) Zur Authentifizierung für KURZE ZEITZEIT liefert!
Die Idee ist, dass der Angreifer das Token nur für einen kurzen Zeitraum benutzen kann, wenn es gestohlen wird.
Mit OAuth2 müssen Sie sich immer wieder mit dem Server authentifizieren, indem Sie Ihren Benutzernamen/Ihr Kennwort oder Ihre API-Anmeldeinformationen eingeben und dann ein Token zurückerhalten.
Da dieser Prozess hin und wieder passiert, werden sich Ihre Tokens häufig ändern, was es für Angreifer "härter" macht, Sie ständig zu imitieren, ohne große Probleme zu haben.
Hoffentlich hilft dies ^^
Deshalb sind Token oft nur für kurze Zeit gültig. Und ja, Sie sollten HTTPS verwenden, wenn Sie Bedenken hinsichtlich der Vertraulichkeit Ihrer Daten haben. –
@ JonathonReinhart Aber wenn ein Token bald abläuft, muss mein Client ein neues Token erhalten, indem er sich von Zeit zu Zeit erneut authentifiziert. Ist es nicht langweilig? – smwikipedia
@ JonathonReinhart Ich denke, ich verstehe, warum Token kurzlebig ist.Auf diese Weise muss der Server den Ablauf eines Tokens nicht verfolgen und somit der Skalierbarkeit weichen. Es ist eine Art "Trade-Off" zwischen "feinere Kontrolle der Token-Ablauf" und "bessere Skalierbarkeit". – smwikipedia