Heim  >  Artikel  >  Backend-Entwicklung  >  Was macht JWT?

Was macht JWT?

Guanhui
GuanhuiOriginal
2020-06-28 16:23:494479Durchsuche

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.

Was macht JWT?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn