Heim >häufiges Problem >Was ist JWT?

Was ist JWT?

coldplay.xixi
coldplay.xixiOriginal
2020-10-30 10:56:129959Durchsuche

jwt ist nur eine Abkürzung und die vollständige Schreibweise lautet JSON Web Tokens. Es handelt sich um eine beliebte domänenübergreifende Authentifizierungslösung, ein JSON-basiertes Token, das zur Deklaration bestimmter Ansprüche im Netzwerk verwendet wird.

Was ist JWT?

JWT-Prinzip: Die JWT-Überprüfungsmethode besteht darin, Benutzerinformationen zu verschlüsseln, um ein Token zu generieren. Bei jeder Anfrage muss der Server nur den gespeicherten Schlüssel verwenden, um die Richtigkeit des Tokens zu überprüfen Es müssen keine Sitzungsdaten gespeichert werden. Dann wird der Server zustandslos und lässt sich leicht erweitern.

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

Ein Token ist in 3 Teile unterteilt:

Header
  • load. (Nutzlast )
  • Signatur (Signatur)
  • 3 durch „.“ getrennte Teile, wie zum Beispiel:
  • eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Header

Der Header-Teil von JWT 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“

kann auch der folgende Algorithmus sein:

Was ist JWT? Nutzlast

Nutzlast Es ist der Datenträger, Wird zum Speichern der tatsächlichen Dateninformationen verwendet, die übertragen werden müssen, und ist auch ein JSON-Objekt. Offizielle empfohlene JWT-Felder: muss größer sein als die Ausstellungszeit

nbf: Definieren Sie die Zeit, vor der das JWT nicht verfügbar ist.

  • iat: Die Ausstellungszeit des JWT

  • jti: Die eindeutige Identität des JWT, hauptsächlich verwendet. Verwenden Sie es als einmaliges Token, um Wiederholungsangriffe zu vermeiden.

  • Sie können auch benutzerdefinierte Felder verwenden, wie zum Beispiel:

    {
        "username": "vist",
        "role": "admin"
    }

  • Signatur
  • Der Signaturteil ist eine Signatur der ersten beiden Teile (Header, 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 Nutzdateninformationen in Base64.

    3. Verwenden Sie zum Schluss die Signatur (Signatur). = HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), Secret)
  • Die vom Client erhaltene Signatur:

    header.payload.signature
kann auch erneut auf JWT Encrypt ausgeführt werden.

JWT verwendet

1. Der Server verschlüsselt die Benutzerinformationen entsprechend dem Anmeldestatus des Benutzers und gibt sie an den Client zurück

2. Der Client erhält das vom Server zurückgegebene Token und speichert es in einem Cookie

3 , Jede Kommunikation zwischen dem Client und dem Server bringt ein Token mit sich, das in die Header-Informationen der HTTP-Anforderung eingefügt werden kann, z Logik

JWT-Funktionen

JWT ist prägnanter und besser für die Bereitstellung in HTML- und HTTP-Umgebungen geeignet.

JWT eignet sich für die einmalige Überprüfung, z. B.: Aktivierungs-E-Mail.

JWT ist geeignet für zustandslose Authentifizierung

JWT eignet sich für serverseitige CDN-Verteilungsinhalte

Zeitsparender als Datenbanksitzungsabfragen

JWT ist standardmäßig nicht verschlüsselt

  • Sie können das Token nicht stornieren oder ändern die Berechtigungen des Tokens während der Nutzung

  • JWT empfiehlt die Verwendung des HTTPS-Protokolls zur Übertragung des Codes

Das obige ist der detaillierte Inhalt vonWas ist 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