JOSE- und JWT-Standards: RFC 7515 bis 7519
Wenn Sie jemals eine moderne Web-Authentifizierung implementiert haben, haben Sie wahrscheinlich JSON Web Tokens (JWT) verwendet. Aber JWT ist nur ein Teil einer größeren Familie von Standards, die als JOSE (JSON Object Signing and Encryption) bekannt sind. Das Verständnis der Beziehung zwischen diesen Standards ist entscheidend für den Aufbau sicherer Anwendungen.
In diesem Leitfaden werden wir die fünf Kern-RFCs untersuchen, die den JOSE-Stack bilden:
- RFC 7515: JWS (JSON Web Signature)
- RFC 7516: JWE (JSON Web Encryption)
- RFC 7517: JWK (JSON Web Key)
- RFC 7518: JWA (JSON Web Algorithms)
- RFC 7519: JWT (JSON Web Token)
1. RFC 7515: JSON Web Signature (JWS)
JWS ist die häufigste Form von JWT. Es stellt sicher, dass der Inhalt des Tokens nicht manipuliert wurde. Es bietet Integrität und Authentizität, aber keine Vertraulichkeit (der Inhalt ist für jeden sichtbar, der das Token sieht).
Struktur:
Ein JWS wird typischerweise im Compact Serialization-Format dargestellt, das aus drei durch Punkte getrennten Teilen besteht:
BASE64URL(Header) . BASE64URL(Payload) . BASE64URL(Signature)
- Header: Gibt den für die Signatur verwendeten Algorithmus an (z. B.
{"alg": "HS256"}). - Payload: Die eigentlichen Daten, die signiert werden.
- Signature: Das Ergebnis der Signatur von Header und Payload.
2. RFC 7516: JSON Web Encryption (JWE)
Während JWS Integrität bietet, bietet JWE Vertraulichkeit. Es verschlüsselt die Nutzlast, sodass nur der vorgesehene Empfänger sie lesen kann.
Struktur:
JWE Compact Serialization besteht aus fünf Teilen:
BASE64URL(Header) . BASE64URL(Encrypted Key) . BASE64URL(Initialization Vector) . BASE64URL(Ciphertext) . BASE64URL(Authentication Tag)
JWE wird häufig verwendet, wenn das Token sensible Informationen wie PII (personenbezogene Daten) enthält, die für den Client oder Zwischen-Proxys nicht sichtbar sein sollten.
3. RFC 7517: JSON Web Key (JWK)
Ein JWK ist eine JSON-Datenstruktur, die einen kryptografischen Schlüssel darstellt. Er wird verwendet, um öffentliche Schlüssel zwischen Servern auf standardisierte Weise auszutauschen.
Beispiel:
{
"kty": "RSA",
"use": "sig",
"kid": "1b94c",
"n": "vXl...",
"e": "AQAB"
}
Eine Sammlung von JWKs wird als JWKS (JSON Web Key Set) bezeichnet und befindet sich häufig an einem Endpunkt wie /.well-known/jwks.json.
4. RFC 7518: JSON Web Algorithms (JWA)
JWA ist das „Wörterbuch“ für den JOSE-Stack. Es definiert die spezifischen Algorithmen, die für die Signatur (JWS) und Verschlüsselung (JWE) verwendet werden.
Gängige Algorithmen:
- HS256: HMAC mit SHA-256 (Symmetrisch).
- RS256: RSASSA-PKCS1-v1_5 mit SHA-256 (Asymmetrisch).
- ES256: ECDSA mit P-256 und SHA-256 (Asymmetrisch).
- A128GCM: AES GCM mit 128-Bit-Schlüssel (Verschlüsselung).
5. RFC 7519: JSON Web Token (JWT)
JWT ist eine Anwendung von JWS oder JWE, bei der die Nutzlast ein Satz von Claims (Ansprüchen) ist. Claims sind Informationen über eine Entität (normalerweise einen Benutzer).
Standard-Claims:
iss: Aussteller (Issuer)sub: Betreff (Subject, meist Benutzer-ID)aud: Zielgruppe (Audience)exp: Ablaufzeit (Expiration Time)iat: Ausgestellt am (Issued At)
Zusammenfassender Vergleich
| Standard | Zweck | Analogie |
|---|---|---|
| JWS | Integrität | Ein unterschriebener Brief |
| JWE | Vertraulichkeit | Ein verschlüsselter Umschlag |
| JWK | Schlüsseldarstellung | Eine öffentliche Schlüsseldatei |
| JWA | Algorithmus-Katalog | Eine Chiffre-Liste |
| JWT | Datenformat | Das eigentliche Token |
Häufig gestellte Fragen FAQ
F: Ist ein JWT immer ein JWS? A: Nicht immer, aber in 99 % der Fälle ja. Ein JWT kann ein JWS (signiert), ein JWE (verschlüsselt) oder sogar ein ungesichertes JWT (ohne Signatur) sein.
F: Sollte ich RS256 oder HS256 verwenden? A: RS256 (Asymmetrisch) wird im Allgemeinen für Identitäts-Token bevorzugt, da der Client die Signatur überprüfen kann, ohne den privaten Schlüssel zu benötigen. HS256 (Symmetrisch) ist schneller, erfordert aber das Teilen des Geheimnisses.
F: Wo kann ich sehen, was in einem JWT steht? A: Da JWS-Nutzlasten nur Base64-kodiert sind, können Sie sie leicht dekodieren. Sie sollten den Daten jedoch niemals vertrauen, es sei denn, Sie haben die Signatur überprüft.
Verwandte Tools
- JWT Decoder – JWS/JWT-Token sofort dekodieren und untersuchen.
- Hash Generator – Hashes für die manuelle Überprüfung generieren.
- Password Generator – Sichere Geheimnisse für die HS256-Signatur erstellen.