JSON Web Tokens (JWTs) sind ein kompaktes, URL-sicheres Mittel zur Darstellung von Ansprüchen, die zwischen zwei Parteien übertragen werden sollen. Diese Ansprüche werden häufig verwendet, um die Integrität und Authentizität von Informationen sicherzustellen.
Dieser Artikel untersucht, wie JWTs funktionieren. Wir werden uns die Struktur eines JWT ansehen, die aus drei codierten und digital signierten Teilen besteht. Anschließend werden wir gängige Anwendungsfälle für JWTs besprechen und einige der Vorteile ihrer Verwendung betrachten.
Die Struktur eines JWT (mit Beispiel)
Ein JSON Web Token (JWT) besteht aus drei durch Punkte getrennten Teilen: Header, Payload und Signatur. Die Gesamtstruktur ist:
xxxxxxxxxx.yyyyyyyyyy.zzzzzzzzzz
Header:
- Der Header besteht typischerweise aus zwei Teilen: dem Typ des Tokens, der JWT ist, und dem verwendeten Signieralgorithmus, wie z. B. HMAC SHA256 oder RSA.
- Beispiel-Header (base64-codiert):
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Payload:
- Die Payload enthält Ansprüche. Ansprüche sind Aussagen über eine Entität (typischerweise den Benutzer) und zusätzliche Daten.
- Es gibt drei Arten von Ansprüchen: registrierte, öffentliche und private Ansprüche.
- Beispiel-Payload (base64-codiert):
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
Signatur:
- Um den Signaturteil zu erstellen, müssen Sie den codierten Header, die codierte Payload, ein Geheimnis, den im Header angegebenen Algorithmus nehmen und diesen signieren.
- Die Signatur wird verwendet, um zu überprüfen, ob der Absender des JWT der ist, der er vorgibt zu sein, und um sicherzustellen, dass die Nachricht unterwegs nicht geändert wurde.
- Beispiel-Signatur:
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
Alles zusammenfassend:
Header: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Payload: eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
Signatur: HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
Codiertes JWT:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwia
Die Vorteile der Verwendung von JWT:
JWTs enthalten JSON-Objekte, die codiert und signiert sind, wodurch Integrität und Authentizität gewährleistet werden, ohne sich auf zustandsbehaftete Sitzungen auf dem Server zu verlassen.
Einige der wichtigsten Vorteile, die JWTs nützlich machen, sind:
- Kompakte Größe durch URL-sichere JSON-Codierung für Platzeffizienz
- In sich geschlossen mit allen notwendigen Benutzerinformationen, um übermäßige Datenbankabfragen zu vermeiden
- Digitale Signaturen für manipulationssichere Sicherheit und Authentizitätsprüfung
- Zustandslose Natur zur Verbesserung der Skalierbarkeit durch Entfernen serverseitiger Sitzungen
- Universelle Interoperabilität mit JSON-Parsern, die in den meisten Sprachen verfügbar sind
- Erweiterbar über benutzerdefinierte Datenfelder, ohne vorhandene Frameworks zu beschädigen
JWT vs. OAuth: Der Unterschied zwischen JWT und OAuth
JWT (JSON Web Token) und OAuth sind verwandt, dienen aber unterschiedlichen Zwecken im Kontext der Authentifizierung und Autorisierung in der Webentwicklung. Hier ist ein kurzer Vergleich von JWT und OAuth:
JWT (JSON Web Token):
- Zweck: JWT ist eine kompakte, in sich geschlossene Möglichkeit, Informationen sicher zwischen Parteien zu übertragen. Es wird häufig für die Authentifizierung und den Informationsaustausch verwendet.
- Inhalt: JWT enthält Ansprüche über eine Entität (typischerweise einen Benutzer) und wird häufig für die Benutzerauthentifizierung verwendet. Ansprüche können Benutzer-ID, Rollen, Berechtigungen und andere relevante Informationen umfassen. JWTs werden oft verwendet, um zustandslose Authentifizierungssysteme zu erstellen.
- Verwendung: JWTs werden in der Regel als Teil der Anfrage-Header in HTTP-Anfragen gesendet. Sie werden verwendet, um die Identität und die Privilegien des Benutzers darzustellen.
OAuth (Open Authorization):
- Zweck: OAuth ist ein Framework für die Autorisierung, das einer Drittanbieteranwendung den Zugriff auf die Ressourcen eines Benutzers auf einem anderen Server ermöglicht, ohne die Anmeldeinformationen des Benutzers preiszugeben. OAuth ist nicht für die Authentifizierung, sondern für die Delegierung von Berechtigungen konzipiert.
- Rollen: OAuth definiert Rollen wie Ressourcenbesitzer, Client, Autorisierungsserver und Ressourcenserver. Es ermöglicht Szenarien, in denen ein Benutzer einer anderen Anwendung Zugriff auf seine Ressourcen (z. B. Fotos, Kontakte) gewähren kann, ohne seine Anmeldeinformationen weiterzugeben.
- Grant Types: OAuth führt Grant Types (Autorisierungscode, implizit, Client-Anmeldeinformationen, Passwort usw.) ein, um festzulegen, wie der Autorisierungsprozess durchgeführt werden soll.
- Tokens: OAuth beinhaltet die Verwendung von Zugriffstoken und Aktualisierungstoken. Zugriffstoken werden für den Zugriff auf geschützte Ressourcen verwendet, und Aktualisierungstoken können verwendet werden, um ein neues Zugriffstoken zu erhalten.
Wesentliche Unterschiede:
- Zweck: JWT wird hauptsächlich für die Authentifizierung und den Informationsaustausch verwendet, während OAuth ein Framework für die Autorisierung ist.
- Inhalt: JWT enthält Ansprüche über einen Benutzer, während sich OAuth auf die Definition von Rollen und Berechtigungen und die Verwaltung des Zugriffs auf Ressourcen konzentriert.
- Rollen: JWT wird oft verwendet, um die Identität des Benutzers darzustellen, während OAuth Rollen wie Ressourcenbesitzer, Client, Autorisierungsserver und Ressourcenserver beinhaltet.
- Tokens: JWT ist eine Art von Token, das für die Authentifizierung verwendet wird, während OAuth Zugriffstoken und Aktualisierungstoken für die Verwaltung der Autorisierung einführt.
Wie funktioniert JWT?
JSON Web Tokens (JWTs) spielen eine Schlüsselrolle bei der Authentifizierung, indem sie eine sichere und effiziente Möglichkeit bieten, die Identität von Benutzern zu überprüfen. Der Prozess umfasst typischerweise die folgenden Schritte:
- Benutzerauthentifizierung: Benutzer melden sich mit ihrem Benutzernamen und Passwort oder über externe Anbieter wie Google oder Facebook an. Der Authentifizierungsserver validiert die Anmeldeinformationen und stellt ein JSON Web Token (JWT) aus, das die Identität des Benutzers bescheinigt.
- JWT-Generierung: Der Identitätsanbieter (IdP) generiert ein JWT und signiert es entweder mit einem geheimen Salt oder einem privaten Schlüssel. Dieses JWT kapselt wesentliche Benutzerinformationen wie Benutzer-ID, Rollen und Ablaufzeit.
- JWT-Verwendung: Der Client des Benutzers speichert das während der Authentifizierung erhaltene JWT sicher. Beim Zugriff auf geschützte Ressourcen enthält der Client das JWT im HTTP-Autorisierungs-Header.
- Token-Verifizierung: Der Ressourcenserver decodiert und verifiziert die Authentizität des JWT mithilfe des bereitgestellten geheimen Salts oder öffentlichen Schlüssels. Dieser Prozess stellt die Integrität und Herkunft des Tokens sicher.
JWT in Apidog
Apidog ist ein benutzerfreundliches API-Entwicklungs- und -Testtool, das sich in der Verwaltung von JSON Web Tokens (JWTs) auszeichnet. Mit seiner intuitiven Benutzeroberfläche vereinfacht Apidog den Umgang mit JWTs und bietet automatische Unterstützung für die Tokenerstellung, dynamische Verwaltung und nahtlose Einbindung in API-Anfragen.

Dieses Tool rationalisiert die JWT-bezogenen Aspekte der API-Entwicklung und ermöglicht es Entwicklern, sich auf effizientes Testen und die Integration in ihre Workflows zu konzentrieren.