![translation](https://cdn.durumis.com/common/trans.png)
Dies ist ein von KI übersetzter Beitrag.
Was ist ein JWT (JSON Web Token)?
- Schreibsprache: Koreanisch
- •
-
Referenzland: Alle Länder
- •
- IT
Sprache auswählen
Von durumis AI zusammengefasster Text
- Ein JSON Web Token (JWT) ist ein verschlüsseltes Token, das zur sicheren Übertragung von Informationen verwendet wird.
- Ein JWT besteht aus einem Header, einer Nutzlast und einer Signatur. Die Signatur stellt die Integrität der Daten sicher.
- JWTs müssen keine Statusinformationen separat verwalten, wodurch sie in verteilten Umgebungen skalierbar sind.
Was ist ein JWT?
Ein JSON Web Token (JWT) ist eine Art der sicheren Übertragung von Informationen in einem JSON-Objekt und ein offener Standard (RFC 7519). Wie der Name schon sagt, werden die notwendigen Informationen in einem Token gespeichert und verschlüsselt verwendet.
JWT wird als signiertes Token (signed token) hervorgehoben. Bei Verwendung eines öffentlichen/privaten Schlüsselpaars zur Signierung garantiert diese Signatur, dass nur die Partei, die den privaten Schlüssel besitzt, das Token signiert hat. Das heißt, der Server, der den Schlüssel besitzt, kann feststellen, ob das Token korrekt ist.
JWT-Struktur
JWT besteht aus Header, Payload und Signatur.
Jeder Teil wird mit Base64 kodiert und durch einen Punkt (.) getrennt.
Header
{
"alg": "HS256",
"typ": "JWT"
Der Header enthält zwei wichtige Informationen: den Typ des Tokens (typ) und den verwendeten Signaturalgorithmus (alg). Der Signaturalgorithmus wird zum Generieren und Überprüfen der Signatur verwendet.
typ ist auf "JWT" festgelegt, und alg ist HMAC, SHA256 usw. geschrieben. Wie im obigen Beispiel bedeutet dies, dass der private Schlüssel den HS256-Algorithmus verwendet.
Payload
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
Die Nutzlast enthält die Claims, die an das Token übergeben werden sollen. Benutzeridentifizierungsinformationen oder Eigenschaften des Tokens werden in Form von Schlüssel-Wert-Paaren gespeichert. Das heißt, der Entwickler kann sie nach Belieben einfügen!
Nach der Standardspezifikation wird der Name des Schlüssels kompakt auf drei Buchstaben verkürzt.
Die registrierten Claims sind wie folgt:
- iss (Issuer): Aussteller des Tokens (enthält eindeutige Identifizierungsinformationen des Ausstellers des Tokens)
- sub (Subject): Das Subjekt, für das das Token bestimmt ist
- aud (Audience): Der Empfänger des Tokens
- exp (Expiration Time): Ablaufdatum des Tokens (nach diesem Datum ist es nicht mehr gültig)
- nbf (Not Before): Aktivierungsdatum des Tokens (das Token kann vor diesem Datum nicht verwendet werden)
- iat (Issued At): Ausstellungsdatum des Tokens
- jti (JWT Id): JWT-Token-Kennung (Wert zur Unterscheidung, wenn mehrere Aussteller vorhanden sind)
Wenn weitere Werte benötigt werden, können diese hinzugefügt werden.
Die Nutzlast ist jedoch kein verschlüsselter, signierter Wert, daher werden keine sensiblen Informationen darin gespeichert.
Es kann von jedem decodiert und eingesehen werden.jwt.io Sie können es auch direkt auf der Website überprüfen.
Signatur
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
your-256-bit-secret
Der Header und die Nutzlast werden mit Base64 kodiert und mit einem Punkt (.) verbunden, und der Server signiert sie dann mit dem privaten Schlüssel your-256-bit-secret.
Daher kann nur der Server, der das Token ausgestellt hat, die Signatur mit dem privaten Schlüssel entschlüsseln.
Wenn Sie an die Entschlüsselung denken, können Sie dies tun, indem Sie die Signatur mit dem privaten Schlüssel entschlüsseln und dann überprüfen, ob base64UrlEncode(header) mit dem Header-Wert des JWT übereinstimmt und ob base64UrlEncode(payload) übereinstimmt.
Mit Ausnahme der Signatur können die Informationen im Header und in der Nutzlast durch die Kodierung eingesehen werden. Die Signatur sorgt jedoch für die Integrität und Sicherheit der Informationen.
JWT ist Self-contained und enthält alle notwendigen Informationen. Es wurde entwickelt, um die Nachteile von Stateful-Sitzungen zu überwinden. JWT benötigt keinen separaten Speicher.
Der Server muss keine Sitzungen verwalten, wodurch stateless ist und die Skalierbarkeit in verteilten Systemen oder Microservice-Architekturen erhöht wird.
Es ist durch eine Signatur, eine digitale Signatur, geschützt und gewährleistet die Integrität der Daten.