Token-Studio
Privacy FirstJWT/JWK/JWKS inspizieren und generieren.
Header
Payload
Signature
Was ist ein JWT?
Ein JSON Web Token (JWT) ist eine kompakte, URL-sichere Methode zur Darstellung von Claims, die zwischen zwei Parteien übertragen werden. Ein JWT besteht aus drei Base64URL-codierten, durch Punkte getrennten Teilen: dem Header (Algorithmus und Typ), dem Payload (Claims) und der Signatur. Die Signatur stellt sicher, dass das Token nicht manipuliert wurde. JWTs werden häufig zur Authentifizierung und zum Informationsaustausch in Web-APIs verwendet. Zu den Standard-Claims gehören sub (Subjekt), iss (Aussteller), aud (Zielgruppe), exp (Ablaufzeit), nbf (Not Before), iat (Ausgestellt am) und jti (JWT-ID).
JWT-Algorithmen
HS256/384/512 verwendet HMAC mit SHA-2 und einem Shared Secret — einfach, aber beide Parteien müssen denselben Schlüssel besitzen. RS256/384/512 verwendet asymmetrische RSA-PKCS#1-v1.5-Signaturen — ideal für Microservice-Architekturen, bei denen Dienste nur den öffentlichen Schlüssel benötigen. ES256/384/512 verwendet ECDSA mit NIST-Kurven für kleinere Signaturen als RSA bei gleichwertiger Sicherheit. PS256/384/512 verwendet RSA-PSS, eine probabilistische Variante, die in modernen Systemen gegenüber RS* bevorzugt wird.
JWK und JWKS
Ein JSON Web Key (JWK) ist eine JSON-Struktur, die einen kryptografischen Schlüssel darstellt. Ein JWK-Set (JWKS) ist eine JSON-Struktur, die ein Array von JWKs unter der Eigenschaft keys enthält. Dienste veröffentlichen ihr JWKS unter einer bekannten URL (z. B. /.well-known/jwks.json), sodass Clients öffentliche Schlüssel zur JWT-Verifizierung abrufen können, ohne einen Out-of-Band-Schlüsselaustausch. Schlüssel in einem JWKS werden durch ihre kid (Key ID) identifiziert, auf die JWT-Header verweisen.
Sicherheits-Best-Practices
Validieren Sie die Claims exp, nbf, iss und aud immer serverseitig. Verwenden Sie niemals den Algorithmus alg: none in der Produktion — er entfernt jeglichen Signaturschutz. Bevorzugen Sie asymmetrische Algorithmen (RS*, ES*, PS*) gegenüber HMAC, wenn mehrere Dienste Tokens verifizieren müssen. Rotieren Sie Schlüssel regelmäßig und verwenden Sie kid, um zu identifizieren, welcher Schlüssel zum Signieren jedes Tokens verwendet wurde. Bewahren Sie private Schlüssel sicher auf — committen Sie sie niemals in die Versionskontrolle. Verwenden Sie kurze Ablaufzeiten und Refresh-Tokens statt langlebiger JWTs.