JWT ist derzeit eine beliebte domänenübergreifende Authentifizierungslösung. Ihr Prinzip besteht darin, Benutzerinformationen zu verschlüsseln, um ein Token zu generieren. Bei jeder Anfrage an den Server muss nur der gespeicherte Schlüssel verwendet werden Korrektheit des Tokens, und es besteht keine Notwendigkeit, es erneut zu speichern. Alle Sitzungsdaten machen den Server zustandslos.
Die JWT-Überprüfungsmethode besteht darin, Benutzerinformationen zu verschlüsseln, um ein Token zu generieren. Jedes Mal, wenn der Server eine Anfrage anfordert, muss er nur den gespeicherten Schlüssel zur Überprüfung verwenden Die Richtigkeit des Tokens ist nicht erforderlich. Es werden keine Sitzungsdaten gespeichert und der Server wird zustandslos, was eine einfache Erweiterung ermöglicht.
Benutzerinformationen vor der Verschlüsselung, wie zum Beispiel:
{ "username": "vist", "role": "admin", "expire": "2018-12-08 20:20:20" }
Vom Client empfangenes Token:
7cd357af816b907f2cc9acbe9c3b4625
JWT-Struktur
A The Der Token ist in 3 Teile unterteilt:
Header
Payload
Signatur (Signatur)
Die drei Teile werden durch „.“ getrennt, wie zum Beispiel:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Header
JWT Der Header-Teil ist ein JSON-Objekt, das Metadaten beschreibt, normalerweise:
{ "typ": "JWT", "alg": "HS256" }
typ ist der Deklarationstyp, geben Sie „JWT“ an
alg ist der Verschlüsselungsalgorithmus, der Standardwert ist „HS256“
Load
Load (Nutzlast) ist der Datenträger, der zum Speichern der tatsächlichen Dateninformationen verwendet wird, die übertragen werden müssen, und ist außerdem ein JSON-Objekt.
JWT offiziell empfohlene Felder:
iss: jwt-Aussteller
sub: jwt für Benutzer
aud: die Partei, die das JWT erhält
Exp: die Ablaufzeit des JWT, diese Ablaufzeit muss größer sein als die Ausstellungszeit
nbf: Definieren Sie den Zeitpunkt, vor dem das JWT nicht verfügbar ist.
iat: Der Ausstellungszeitpunkt des JWT
jti: Die einzigartige Identität von jwt, die hauptsächlich als einmaliges Token verwendet wird, um Wiederholungsangriffe zu vermeiden.
Sie können auch benutzerdefinierte Felder verwenden, wie zum Beispiel:
{ "username": "vist", "role": "admin" }
Signatur
Der Signaturteil ist ein Vergleich der ersten beiden Teile (Header-Teil, Nutzlast), um Datenmanipulationen zu verhindern.
Folgen Sie zum Generieren den folgenden Schritten:
1. Geben Sie zuerst das Geheimnis an
2. Konvertieren Sie die Header- und Nutzlastinformationen jeweils in base64
3. Verschlüsseln Sie mit dem im Header angegebenen Algorithmus
Schließlich, Signatur = HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secret)
Die vom Client erhaltene Signatur:
header.payload.signature
Das JWT kann auch neu verschlüsselt werden.
Empfohlenes Tutorial: „PHP“
Das obige ist der detaillierte Inhalt vonWas macht JWT?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!