Definition
JSON Web Token (JWT) ist ein offener Standard zur sicheren Übertragung von Informationen zwischen Parteien als JSON-Objekt. Das Token besteht aus drei Teilen: Header, Payload und Signatur. Diese Struktur ermöglicht die Überprüfung der Authentizität und Integrität der übertragenen Daten ohne zentrale Speicherung. JWT wird häufig in Webanwendungen verwendet, um Identitäts- und Zugriffsinformationen zu transportieren. Es ist in RFC 7519 standardisiert und wird von verschiedenen Programmiersprachen und Frameworks unterstützt.
Die Hauptfunktion von JWT besteht darin, Informationen sicher und kompakt zu übertragen. Die Daten im Payload sind typischerweise Ansprüche (Claims), die bestimmte Eigenschaften oder Rechte des Token-Inhabers beschreiben. Die Signatur schützt vor Manipulationen, indem sie mit einem geheimen Schlüssel oder einem privaten Schlüssel eines asymmetrischen Schlüsselpaares erzeugt wird. Dadurch kann der Empfänger die Echtheit des Tokens überprüfen, ohne auf eine Datenbank zugreifen zu müssen.
Was bedeutet das für Ihr Unternehmen?
JSON Web Tokens begegnen Ihnen bei Apps und Schnittstellen, über die sich Nutzer oder Systeme anmelden. Ein häufiger Fehler sind Tokens mit sehr langer Gültigkeit, die sich nicht zurückziehen lassen, wenn ein Gerät verloren geht oder ein Mitarbeiter ausscheidet. Bei der Prüfung einer Anwendung sollte außerdem klar sein, dass im Token keine vertraulichen Daten stehen, denn der Inhalt ist zwar signiert, aber nicht verschlüsselt.
Geschichte und Standardisierung
Der Standard JSON Web Token wurde im Jahr 2015 durch das Internet Engineering Task Force (IETF) im Rahmen der RFC 7519 veröffentlicht. Er entstand aus der Notwendigkeit, eine leichtgewichtige und interoperable Methode zur sicheren Übertragung von Claims zu schaffen, die plattformunabhängig ist. JWT ist Teil einer Familie von Standards, die unter dem Oberbegriff JSON Object Signing and Encryption (JOSE) zusammengefasst werden. Diese umfassen auch JSON Web Signature (JWS) und JSON Web Encryption (JWE).
Die Entwicklung von JWT wurde maßgeblich von Entwicklern und Unternehmen vorangetrieben, die sichere Authentifizierungsmechanismen für Webanwendungen benötigten. Die Verbreitung begann mit OAuth 2.0 und OpenID Connect, die JWT als Token-Format verwenden. Seit der Standardisierung hat sich JWT zu einem der meistgenutzten Formate für Single Sign-On (SSO) und API-Authentifizierung entwickelt.
Funktionsweise
Ein JWT besteht aus drei Base64URL-kodierten Teilen, die durch Punkte getrennt sind: Header, Payload und Signatur. Der Header enthält Metadaten zum Token, wie den verwendeten Algorithmus zur Signatur. Der Payload beinhaltet die Claims, also die Informationen, die übertragen werden sollen. Die Signatur wird erzeugt, indem der Header und der Payload mit einem geheimen Schlüssel oder einem privaten Schlüssel kryptografisch signiert werden.
Beim Empfang eines JWT kann der Empfänger die Signatur validieren, um sicherzustellen, dass das Token nicht verändert wurde. Anschließend kann er die Claims im Payload auslesen und entsprechend verarbeiten. JWTs sind selbstenthaltend, das heißt, sie enthalten alle notwendigen Informationen, um die Identität und Berechtigungen des Nutzers zu überprüfen, ohne eine zusätzliche Datenbankabfrage.
Einsatzgebiete
JWT wird vor allem in der Webentwicklung für Authentifizierungs- und Autorisierungszwecke eingesetzt. Beispielsweise nutzen viele Single-Page-Applications (SPA) JWTs, um nach dem Login den Zugriff auf geschützte Ressourcen zu steuern. Auch in Microservice-Architekturen dienen JWTs zur sicheren Kommunikation zwischen Diensten. Die kompakte Form und die einfache Überprüfbarkeit machen JWTs für diese Szenarien geeignet.
Darüber hinaus findet JWT Anwendung in mobilen Anwendungen, bei der API-Authentifizierung und bei Single Sign-On (SSO)-Systemen. Durch die Unterstützung verschiedener Signaturalgorithmen kann JWT flexibel an unterschiedliche Sicherheitsanforderungen angepasst werden. Allerdings ist bei sensiblen Daten Vorsicht geboten, da JWTs standardmäßig nicht verschlüsselt sind.
Abgrenzung zu verwandten Technologien
JWT unterscheidet sich von klassischen Session-Cookies dadurch, dass es zustandslos ist und keine serverseitige Speicherung erfordert. Während Session-Cookies auf dem Server verwaltet werden, trägt das JWT alle notwendigen Informationen im Token selbst. Dies erleichtert die Skalierung von Anwendungen, birgt jedoch Risiken bei unsachgemäßer Handhabung, etwa bei Token-Diebstahl.
Im Vergleich zu anderen Token-Formaten wie SAML (Security Assertion Markup Language) ist JWT leichtergewichtig und verwendet JSON statt XML. SAML wird häufig in Unternehmensumgebungen für Single Sign-On eingesetzt, während JWT vor allem in modernen Web- und mobilen Anwendungen verbreitet ist. Zudem unterstützt JWT neben der Signatur auch optionale Verschlüsselung, was es flexibler macht als manche Alternativen.