Heim  >  Artikel  >  Java  >  Wie integriert Springboot JWT, um eine Identitätsauthentifizierung zu erreichen?

Wie integriert Springboot JWT, um eine Identitätsauthentifizierung zu erreichen?

王林
王林nach vorne
2023-05-14 19:25:101479Durchsuche

1. Was ist JWT

JSON Web Token (JWT), es ist derzeit die beliebteste domänenübergreifende Authentifizierungslösung. Die aktuelle Projektentwicklung umfasst im Allgemeinen die Trennung von Front-End und End-End, was domänenübergreifende Probleme und Authentifizierungsprobleme mit sich bringt.

2. JWT-Zusammensetzung

besteht aus drei Teilen: Header, Nutzlast und Signatur

Header:

Header-Informationen bestehen aus zwei Teilen: 1. Der Typ des Tokens, also JWT; 2. Der Signaturalgorithmus B. HMASSHA256 oder RSA; Das Typ-Attribut in diesem JSON wird verwendet, um zu identifizieren, dass es sich bei der gesamten Token-Zeichenfolge um eine JWT-Zeichenfolge handelt Die Attribute typ und alg sind eigentlich Typalgorithmen, was Typ bzw. Algorithmus bedeutet. Der Grund, warum sie durch drei Buchstaben dargestellt werden, basiert auch auf der Berücksichtigung der endgültigen Zeichenfolgengröße von JWT. Sie stimmt auch mit dem Namen von JWT überein, sodass es sich bei allen um drei Zeichen handelt ... typ und alg sind die in angegebenen Attribute der JWT-Standardname.

Payload:

Payload wird verwendet, um die zu übertragenden Daten zu übertragen. Diese Anweisungen werden vom JWT-Standard als Ansprüche bezeichnet „Attribut-Wert-Paar“ ist eigentlich ein Anspruch (Anforderung), und jeder Anspruch repräsentiert eine bestimmte Bedeutung und Funktion.

Wir können einige Geschäftsinformationen in den Anspruch aufnehmen.

Signatur (Signatur):

Die Signatur besteht aus den beiden Zeichenfolgen, die nach der Base64URL-Codierung der dem Header und der Nutzlast entsprechenden JSON-Struktur erhalten, mit „englischem Punkt“ zusammengefügt und dann gemäß dem angegebenen Signaturalgorithmus generiert werden von alg im Header von.

Unterschiedliche Algorithmen führen zu unterschiedlichen Signaturergebnissen. Nehmen Sie alg: HS256 als Beispiel, um zu veranschaulichen, wie Sie die vorherige Signatur erhalten.


Gemäß der vorherigen Beschreibung der verfügbaren Werte von alg enthält HS256 tatsächlich zwei Algorithmen: den HMAC-Algorithmus und den SHA256-Algorithmus. Der erstere wird zum Generieren eines Digests und der letztere zum digitalen Signieren des Digests verwendet. Diese beiden Algorithmen können zusammen auch als HMACSHA256

jwt-Datenstrukturdiagramm bezeichnet werden:

Wie integriert Springboot JWT, um eine Identitätsauthentifizierung zu erreichen? 3. JWT-Funktionsprinzip

1. Die erste gesendete Anmeldeanforderung enthält zwangsläufig Benutzerinformationen uname und pwd

2 Die Benutzerinformationen uname und pwd wurden erfolgreich angemeldet. Die Benutzerinformationen werden über die JWT-Tool-Klasse in eine verschlüsselte Zeichenfolge generiert

3. Die verschlüsselte Zeichenfolge wird in Form eines Antwortheaders an das Frontend gesendet

4 . Der Front-End-Server antwortet, fängt die im Antwortheader enthaltene JWT-Zeichenfolge ab und fügt sie in Vuex ein.

5 Wenn die zweite Anfrage gestellt wird, gibt es einen Anforderungs-Interceptor im Front-End-Server. Dadurch wird die JWT-Zeichenfolge in Vuex in den Anforderungsheader der Anforderung eingefügt.

6 Wenn die Anforderung den Backend-Server über eine domänenübergreifende Methode erreicht, gibt es auf dem Backend-Server einen weiteren Filter, der die JWT-Zeichenfolge im abfängt Anforderungsheader. 7. Die JWT-Tool-Klasse analysiert die JWT-Zeichenfolge und überprüft sie schließlich

4. Springboot integriert JWT

Gesamtidee:

Wenn das Front-End auf die Backend-Anmeldeschnittstelle zugreift, Es bestimmt zunächst anhand des Benutzernamens und des Kennworts, ob der Benutzer in der Benutzertabelle vorhanden ist. Wenn der Benutzer vorhanden ist, können Sie zum Generieren einer JWT-Zeichenfolge einige Geschäftsinformationen hinzufügen (z. B. Anmeldekonto, richtiger Name des Benutzers usw.). zum JWT-String hinzufügen und den JWT-String an das Front-End zurückgeben

Das aktuelle Ende ruft den JWT-String ab und fügt ihn in den Header aller Anforderungen ein, z. B. token=jwt-String

Entwickeln Sie im Backend einen Filter, um alle abzufangen Anfragen (mit Ausnahme von Anmeldeanfragen, da die Anmeldeanforderung kein JWT generiert hat) und JWT (dh den Wert des Tokens) aus dem Header der Anforderung abrufen und die JWT-Prüfsumme überprüfen, Geschäftsinformationen im JWT abrufen und einfügen Die Geschäftsinformationen im Header der Anfrage, sodass die Back-End-Schnittstelle sie direkt aus dem Header abrufen kann. Wenn das JWT im Filter abläuft oder die Überprüfung fehlschlägt, wird eine Eingabeaufforderung an das Front-End zurückgegeben Das Frontend zeigt die Anmeldeseite an, damit sich Benutzer erneut anmelden können.

1. Abhängigkeiten in pom einführen.

Das obige ist der detaillierte Inhalt vonWie integriert Springboot JWT, um eine Identitätsauthentifizierung zu erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen