Was ist ein JSON Web Token (JWT)?
Ein JSON Web Token (JWT) ist ein offener Standard (RFC 7519), der eine kompakte und eigenständige Möglichkeit definiert, Informationen sicher zwischen Parteien als JSON-Objekt zu übertragen. Diese Informationen können verifiziert und vertrauenswürdig sein, da sie digital signiert sind. JWTs können mit einem Geheimnis (mit dem HMAC-Algorithmus) oder einem öffentlichen/privaten Schlüsselpaar unter Verwendung von RSA oder ECDSA signiert werden.
Struktur eines JWT
JWTs bestehen aus drei Teilen, die durch Punkte (.) getrennt sind. Wenn Sie ein Token sehen, sieht es so aus: xxxxx.yyyyy.zzzzz.
- Header: Besteht typischerweise aus zwei Teilen: dem Typ des Tokens, der JWT ist, und dem verwendeten Signieralgorithmus, wie HMAC SHA256 oder RSA. Er ist Base64Url-kodiert.
- Payload: Enthält die Claims. Claims sind Aussagen über eine Entität (typischerweise den Benutzer) und zusätzliche Daten (wie Rolle, Benutzer-ID, E-Mail und Ablaufzeit
exp). Er ist ebenfalls Base64Url-kodiert. - Signatur: Um den Signaturteil zu erstellen, müssen Sie den kodierten Header, den kodierten Payload, ein Geheimnis und den im Header angegebenen Algorithmus nehmen und signieren. Dies stellt sicher, dass das Token während der Übertragung nicht verändert wurde.
Die Gefahr von Online-JWT-Decodern
JWTs sind äußerst sensibel. Wenn ein böswilliger Akteur ein gültiges JWT eines Administrators abfängt, kann er leicht die Sitzung dieses Benutzers übernehmen und auf private Systeme zugreifen. Sie sollten niemals Produktions-JWTs in zufällige Online-Tools einfügen. Viele Online-Decoder senden Ihr eingefügtes Token stillschweigend an einen Backend-Server zum Protokollieren, für Analysen oder Schlimmeres.
Unser Tool ist anders. Wir haben diesen Decoder mit reinem Frontend-JavaScript geschrieben. Der Dekodierungsprozess (einfaches Parsen der Base64-Strings) findet vollständig im Speicher Ihres Webbrowsers statt. Versuchen Sie, die Internetverbindung zu trennen und Ihr Token einzufügen – es wird immer noch perfekt dekodiert, was beweist, dass Ihre Daten Ihren Rechner niemals verlassen.
Sind JWTs verschlüsselt?
Ein häufiges Missverständnis unter Junior-Entwicklern ist, dass JWTs verschlüsselt sind und die Daten im Payload verbergen. Das sind sie nicht. Standard-JWTs (JWS) sind lediglich kodiert (Base64Url) und kryptografisch signiert. Jeder, der das Token abfängt, kann es dekodieren (mit einem Tool wie diesem) und die Claims lesen. Daher dürfen Sie niemals Passwörter, Kreditkartennummern oder API-Geheimnisse in den Payload setzen.