Design af JWT-godkendelsesflowet
Få overblik over hele processen fra brugerlogin og token-generering til efterfølgende request-godkendelse med JWT'er.
Design af JWT-godkendelsesflowet er en gratis Spring Security 6 og JWT-godkendelse-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Spring Security 6 og JWT-godkendelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Spring Security 6 og JWT-godkendelse-kurset indeholder 4 lektioner i alt.
Oversigt over JWT-godkendelsesflowet
Velkommen! I denne lektion designer vi hele forløbet for, hvordan en bruger godkendes med JWT'er.
Det er afgørende at forstå 'flowet'. Det beskriver rækkefølgen af trin fra det tidspunkt, hvor en bruger logger ind, til vedkommende får adgang til beskyttede ressourcer.
JWT'er giver en effektiv, tilstandsløs måde at håndtere brugergodkendelse og -autorisation på.
Tilstandsløs kontra tilstandsbaseret godkendelse
Traditionelt bruger webapps tilstandsbaserede sessioner. Serveren husker, hvem du er, via et sessions-id.
Tilstandsløs godkendelse, som med JWT'er, betyder, at serveren ikke gemmer sessionsdata. Hver forespørgsel indeholder alle nødvendige oplysninger (selve JWT'en) til at verificere brugeren.
Det gør skalering lettere, fordi enhver server kan behandle enhver forespørgsel uden at have brug for delt sessionslagring.
Brugeren starter login
Godkendelsesflowet begynder, når en bruger forsøger at logge ind. Brugeren angiver typisk sit brugernavn og sin adgangskode.
Disse oplysninger sendes normalt til et bestemt slutpunkt på din server, ofte via en HTTP POST-forespørgsel til noget i stil med /api/auth/login.
Det er vigtigt at overføre disse legitimationsoplysninger sikkert, typisk via HTTPS.
Serveren validerer legitimationsoplysningerne
Når loginanmodningen modtages, er serverens opgave at verificere de angivne legitimationsoplysninger.
Spring Security bruger komponenter som AuthenticationManager og UserDetailsService til at kontrollere, om brugernavnet findes, og om adgangskoden matcher.
Hvis legitimationsoplysningerne er gyldige, er brugeren godkendt.
Oprettelse af JWT'en
Når brugerens identitet er verificeret, genererer serveren en JSON Web Token (JWT).
Denne token indeholder oplysninger om brugeren (kaldet 'claims') og signeres digitalt af serveren.
Signaturen sikrer, at tokenen ikke er blevet manipuleret, og at den stammer fra en pålidelig kilde.
Konceptuel oprettelse af en token
Her er et forenklet, konceptuelt eksempel på, hvordan en server kan 'oprette' en token. Rigtige JWT-biblioteker gør meget mere, herunder at signere tokenen.
Dette kodestykke illustrerer blot, hvordan brugerdata kan samles til en unik streng.
public class TokenGenerator {
public static String generateSimpleToken(String username, String role) {
// In a real app, this would involve JWT library for signing
// and encoding claims.
long expirationTime = System.currentTimeMillis() + 3600000; // 1 hour
return "header.payload." + username + "." + role + "." + expirationTime;
}
public static void main(String[] args) {
String userToken = generateSimpleToken("alice", "USER");
System.out.println("Generated Token: " + userToken);
String adminToken = generateSimpleToken("bob", "ADMIN");
System.out.println("Generated Token: " + adminToken);
}
}Klienten modtager tokenen
Efter at have genereret JWT'en sender serveren den tilbage til klienten.
Typisk inkluderes JWT'en i svarteksten til loginanmodningen, ofte som et JSON-objekt.
Klienten udtrækker derefter denne token fra svaret.
Hvor klienter gemmer JWT'er
Når klienten modtager JWT'en, skal den gemmes til fremtidige forespørgsler.
- Lokal lagring: Nem at bruge og bevares på tværs af browsersessioner.
- Sessionslagring: Svarer til lokal lagring, men ryddes, når browserfanen lukkes.
- HTTP-only-cookies: Mere sikre mod XSS, men kan være sårbare over for CSRF.
Valget afhænger af din applikations sikkerhedskrav og arkitektur.
Brug af tokenen til adgang
Ved hver efterfølgende forespørgsel til en beskyttet ressource skal klienten inkludere den gemte JWT.
Den almindelige måde at gøre dette på er at tilføje en Authorization-header til HTTP-forespørgslen.
Headerens værdi begynder typisk med Bearer, efterfulgt af et mellemrum og selve JWT'en: Authorization: Bearer [your_jwt_here].
Serveren validerer den indgående JWT
Når en forespørgsel med en JWT ankommer til serveren, opfanger Spring Security den.
Serveren udfører derefter flere kontroller:
- Er tokenformatet gyldigt?
- Er signaturen gyldig (ved hjælp af den hemmelige nøgle)?
- Er tokenen udløbet?
- Er claims (f.eks. brugerroller) tilstrækkelige til den ønskede ressource?
Adgang gives kun, hvis alle kontroller består.
Tjek af flowet
Lad os teste din forståelse af JWT-godkendelsesflowet.
Når en bruger er logget ind, og serveren har godkendt brugerens legitimationsoplysninger, hvad er så de vigtigste næste trin i et typisk JWT-godkendelsesflow?
Opsummering af flowet
Du har designet JWT-godkendelsesflowet!
Vi gennemgik forløbet fra en brugers loginanmodning over godkendelse på serversiden og generering af en JWT til klientens modtagelse, lagring og brug af tokenen ved efterfølgende adgang til beskyttede ressourcer.
Denne tilstandsløse tilgang forbedrer skalerbarhed og fleksibilitet. Nu går vi i dybden med implementeringen af et brugerdefineret JWT-filter!
Lær Java med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 12
- Lektioner
- 48
Ofte stillede spørgsmål
Er lektionen “Design af JWT-godkendelsesflowet” gratis?
Ja — alle 3 lektioner i læringssporet Spring Security 6 og JWT-godkendelse, inklusive “Design af JWT-godkendelsesflowet”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Spring Security 6 og JWT-godkendelse-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Design af JWT-godkendelsesflowet”?
Få overblik over hele processen fra brugerlogin og token-generering til efterfølgende request-godkendelse med JWT'er. Du øver dig i Spring Security 6 og JWT-godkendelse med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Spring Security 6 og JWT-godkendelse?
Der kræves ingen tidligere erfaring. Spring Security 6 og JWT-godkendelse på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Design af JWT-godkendelsesflowet”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Spring Security 6 og JWT-godkendelse-lektion?
Ja. Alle Spring Security 6 og JWT-godkendelse-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Design af JWT-godkendelsesflowet
- Implementering af et brugerdefineret JWT-filter
- Integration af AuthenticationManager og providers
- Håndtering af godkendelsesfejl og entry points