Was ist JSON Web Token?
Ein JSON Web Token (JWT) ist ein kompaktes, URL-sicheres Token-Format, definiert in RFC 7519, das Claims zwischen zwei Parteien als digital signiertes JSON-Objekt darstellt und so zustandslose Authentifizierung und Informationsaustausch ermöglicht.
Auch bekannt als: JSON Web Token, JWTs
Ein JWT besteht aus drei base64url-kodierten, durch Punkte getrennten Teilen: einem Header (der den Signaturalgorithmus angibt), einem Payload (der Claims enthält – also Schlüssel-Wert-Paare wie Benutzer-ID, Rollen und Ablaufzeitpunkt) und einer Signatur (berechnet über Header und Payload mit einem geheimen oder privaten Schlüssel). Die Signatur ermöglicht es jeder Partei, die den Verifizierungsschlüssel besitzt, zu bestätigen, dass das Token nicht manipuliert wurde.
JWTs werden häufig als Bearer Token bei der API-Authentifizierung verwendet. Nach dem Login stellt der Server ein JWT aus, das die Identität und Berechtigungen des Benutzers enthält. Der Client schließt dieses JWT in nachfolgende Anfragen ein (typischerweise im Authorization-Header), und der Server verifiziert die Signatur, ohne eine Datenbank oder einen Session-Store abfragen zu müssen. Diese Zustandslosigkeit macht JWTs attraktiv für verteilte Systeme und Microservices-Architekturen, bei denen das Teilen von Session-Zustand zwischen Diensten unpraktisch ist.
JWTs bringen wichtige Sicherheitsüberlegungen mit sich. Da der Payload nur base64-kodiert (nicht verschlüsselt) ist, kann jeder, der ein JWT abfängt, seinen Inhalt lesen – leg niemals Geheimnisse in JWT-Payloads, außer du verwendest JWE (JSON Web Encryption). Token sollten kurze Ablaufzeiten haben, da sie nach der Ausstellung nicht einfach widerrufen werden können. Algorithmus-Verwechslungsangriffe, bei denen ein Angreifer den Header auf „none" ändert oder asymmetrische auf symmetrische Verifizierung umschaltet, waren wiederkehrende Schwachstellen in JWT-Bibliotheken.
Wie Vaulted JSON Web Token verwendet
Vaulted verwendet JWT weder für Authentifizierung noch für Session-Management, da es keine Benutzerkonten hat. JWTs und andere Bearer Token sind jedoch häufig geteilte Zugangsdaten, die eine sichere Übermittlung benötigen – etwa das Teilen eines langlebigen API-Tokens oder eines Service-to-Service-JWT-Secrets mit einem Kollegen während eines Incidents. Vaulted bietet eine verschlüsselte, selbstzerstörende Übermittlung für solche Token und stellt sicher, dass sie nicht in Kommunikationskanälen persistieren.