Sådan fungerer JWT-autentificering · Mindmaps

Sådan fungerer JWT-autentificering. Et redigerbart mindmap med farvede grene, underemner og forbindelser. Buede linjer viser sammenhænge; pile bruges, når retningen har betydning.

Et JSON Web Token er en signeret, selvstændig erklæring om, hvem du er: serveren laver det én gang ved login, og hver senere forespørgsel beviser sig selv med tokenet i stedet for et sessionsopslag.

Sådan fungerer JWT-autentificering · Mindmaps

The interactive MindMap canvas for this explanation — every lane, row and arrow above is a real QueryChart diagram you can open and edit.

Sådan læser du mindmappet

  • Begynd ved emnet i midten, og følg en farvet gren til de tilhørende idéer.
  • Buede linjer viser sammenhænge; pile bruges, når retningen har betydning.

Sign in

Denne gren samler “User submits email and password”, “Credentials valid?”, “Sign-in rejected”, “Server verifies the credentials against the database”.

Build token

Denne gren samler “A JWT is three dot-separated parts: a header (algorithm), a payload of claims (who the user is, when the token expires), and a signature. The payload is readable by anyone — it is not secret, it is tamper-evident.”, “Server signs the token with its secret key”.

Client carries JWT

Denne gren samler “Client receives the JWT and stores it”, “Client sends the JWT in the Authorization header”.

Verify

Denne gren samler “Because the server never stores session state, this check is what makes JWT authentication “stateless” — no session table to look up on every request.”, “Signature valid and not expired?”.

Authorize or reject

Denne gren samler “Server trusts the claims and processes the request”, “Request rejected with 401”.

Forbindelser på tværs

Et JWT er tre dele: header, payload, signatur, samlet med punktummer; payloaden kan læses, men afslører ændringer.

Signaturen forvandler identitet til en rettighed: det at have et gyldigt, ikke-udløbet token er det, der autentificerer forespørgslen.

Verifikationen er stateless: at genberegne signaturen erstatter sessionsopslaget.

Tokenet skal gemmes sikkert af klienten og sendes med hver forespørgsel, så dets udløb er den reelle sikkerhedsgrænse.

JWT og OAuth passer sammen: OAuth afgør, hvad klienten må gøre, og JWT er ét udbredt format for det token, der bærer afgørelsen.

Key relationships and takeaways

  • Et JWT er tre dele: header, payload, signatur, samlet med punktummer; payloaden kan læses, men afslører ændringer.
  • Signaturen forvandler identitet til en rettighed: det at have et gyldigt, ikke-udløbet token er det, der autentificerer forespørgslen.
  • Verifikationen er stateless: at genberegne signaturen erstatter sessionsopslaget.
  • Tokenet skal gemmes sikkert af klienten og sendes med hver forespørgsel, så dets udløb er den reelle sikkerhedsgrænse.
  • JWT og OAuth passer sammen: OAuth afgør, hvad klienten må gøre, og JWT er ét udbredt format for det token, der bærer afgørelsen.

When to use this visual

  • At lære et nyt backendteam, hvorfor der ikke er brug for en sessionstabel, og hvad signaturen faktisk beviser.
  • At vælge mellem JWT og serverside-sessioner til en tjeneste, hvor horisontal skalering gør delt tilstand besværlig.
  • At gennemgå et tokens claims: udløb, udsteder, modtager, før du stoler på det i en microservice.

Sådan fungerer det

  1. Tilpas emnet i midten

    Giv emnet et navn, der passer til dit projekt eller din undervisning.

  2. Udbyg grenene

    Rediger idéerne, og tilføj eksempler eller noter.

  3. Forbind beslægtede idéer

    Tegn forbindelser på tværs af grene; brug kun pile, når retningen betyder noget.

Ofte stillede spørgsmål

Hvad er et JWT, og hvad indeholder det?

Et JSON Web Token er en streng af tre punktadskilte dele: en header, der angiver signeringsalgoritmen, en payload af claims om brugeren og tokenets levetid, og en signatur. Headeren og payloaden er base64-kodet JSON (læsbar for alle), og signaturen er det, der forhindrer, at de bliver ændret uden signeringsnøglen.

Hvorfor kaldes JWT-autentificering stateless?

Fordi serveren ikke gemmer noget om sessionen. Hver forespørgsel ankommer med tokenet, og serveren verificerer signaturen og udløbet på stedet. Der er ingen sessionstabel at forespørge og ingen tilstand at replikere på tværs af servere, og det er dét, der gør fremgangsmåden horisontalt skalerbar. Prisen er, at et token ikke kan trækkes tilbage, før det udløber, uden ekstra maskineri.

Er et JWT sikkert, når alle kan læse payloaden?

At læse og at stole på er to forskellige ting. Payloaden er ikke krypteret (læg ikke hemmeligheder i den), men signaturen betyder, at enhver ændring gør tokenet ugyldigt, så en klient kan ikke ændre sine egne claims. Transporten sikres ved, at tokenet rejser inde i HTTPS, og de data, det giver adgang til, er beskyttet ved, at ressourceserveren håndhæver de claims.

Hvordan hænger JWT og OAuth sammen?

De løser hver sin halvdel af problemet. OAuth er autorisationsprotokollen: hvordan en klient får tilladelse og et token. JWT er et tokenformat. I praksis er OAuth-adgangstokens ofte JWT'er: autorisationsserveren signerer et JWT, der bærer de scopes, og ressourceservere verificerer det. Dette lærred dækker autentificeringshalvdelen; den visuelle forklaring om OAuth dækker delegeringshalvdelen.

Rediger dette mindmap i QueryChart

Åbn mindmappet på et redigerbart lærred. Flyt idéer, tilføj grene, og tegn forbindelser.

Rediger dette mindmap i QueryChart

Mere i Mindmaps