Innlogging og generering av JWT-er
Bygg et innloggingssystem som utsteder og administrerer JSON Web Tokens (JWT-er) for økthåndtering.
Innlogging og generering av JWT-er er en gratis leksjon i KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling inneholder totalt 4 leksjoner.
Velkommen til innloggingssystemer
I forrige leksjon lærte vi om brukerregistrering og sikker hashing av passord. Nå er det på tide å bygge innloggingssystemet!
Et innloggingssystem gir autentiserte brukere tilgang til beskyttede ressurser og lar dem tilpasse opplevelsen i SaaS-applikasjonen Deres.
Slik fungerer innlogging (oversikt)
Når en bruker prøver å logge inn, oppgir vedkommende vanligvis et brukernavn (eller en e-postadresse) og et passord. Den grunnleggende prosessen er slik:
- Klienten (for eksempel mobilappen Deres) sender legitimasjonen til serveren.
- Serveren bekrefter denne legitimasjonen mot de lagrede brukerdataene.
- Hvis opplysningene er gyldige, gir serveren tilgang.
Bekrefte brukerlegitimasjon
Når serveren mottar innloggingsopplysninger, må den utføre en viktig kontroll:
- Finn brukeren ved hjelp av den unike identifikatoren deres (for eksempel e-postadresse eller brukernavn).
- Hent det lagrede, hashkede passordet for brukeren.
- Sammenlign passordet som ble oppgitt (etter at det er hashet med samme metode), med det lagrede, hashkede passordet.
Lag aldri passord i klartekst! Hash og salt dem alltid, slik vi diskuterte i leksjonen om registrering.
Utfordringen: Tilstandsløse API-er
Moderne API-er er ofte tilstandsløse, noe som betyr at serveren ikke husker tidligere forespørsler fra den samme klienten. Dette gjør API-er skalerbare, men skaper en utfordring for brukerautentisering.
Hvordan vet vi at en bruker som nettopp logget inn, fortsatt er autentisert ved neste forespørsel, uten å sende legitimasjon hver gang?
Introduksjon til JSON Web Tokens (JWT)
JSON Web Tokens (JWT-er) er en kompakt og URL-sikker måte å representere påstander som skal overføres mellom to parter. De egner seg utmerket til tilstandsløs autentisering.
I stedet for økter på serversiden utsteder serveren en JWT etter vellykket innlogging. Klienten lagrer deretter dette tokenet og sender det med hver påfølgende forespørsel.
JWT-struktur: Header
En JWT består av tre deler som er skilt med punktum: Header, Payload og Signature.
Header inneholder vanligvis to deler:
typ(tokenets type, vanligvis «JWT»)alg(signeringsalgoritme, for eksempel «HS256» for HMAC SHA256)
Det er et JSON-objekt som er Base64Url-kodet.
{"alg":"HS256","typ":"JWT"}JWT-struktur: Payload (påstander)
Payload inneholder «claims» – påstander om en enhet (vanligvis brukeren) og tilleggsdata.
Påstander kan være:
- Registrerte: Standardfelter som
sub(subjekt),exp(utløpstidspunkt) ogiat(tidspunkt for utstedelse). - Offentlige: Egendefinerte påstander som De definerer, men registrerer i IANA JSON Web Token Registry.
- Private: Egendefinerte påstander som partene som bruker dem, blir enige om, for eksempel
userIdellerrole.
Eksempel på Payload:
{"sub":"12345","name":"Coddy User","exp":1700000000}JWT-struktur: Signature
Signature er avgjørende for å kontrollere tokenets integritet. Den opprettes ved å ta den kodede headeren, den kodede payloaden og en hemmelig nøkkel, og deretter bruke algoritmen som er angitt i headeren.
Hvis noen prøver å endre headeren eller payloaden, mislykkes signaturkontrollen, og tokenet blir ugyldig. Den hemmelige nøkkelen er bare kjent av serveren.
Generere en JWT (konseptuelt)
Etter at brukerens legitimasjon er bekreftet, genererer serveren en JWT. Dette innebærer:
- Opprette JSON-objektene Header og Payload.
- Base64Url-kode begge.
- Slå dem sammen med et punktum.
- Signere den sammenslåtte strengen med en hemmelig nøkkel og den valgte algoritmen for å lage Signature.
Den endelige JWT-en er EncodedHeader.EncodedPayload.Signature.
Eksempel på generering av JWT
Selv om full JWT-signering krever et bibliotek, kan vi demonstrere Base64-kodingen som inngår i oppbyggingen av en JWT-streng. Dette sikrer at tokenet er URL-sikkert.
import java.util.Base64;
import java.nio.charset.StandardCharsets;
public class Main {
public static void main(String[] args) {
String headerJson = "{\"alg\":\"HS256\",\"typ\":\"JWT\"}";
String payloadJson = "{\"sub\":\"user123\",\"name\":\"Coddy User\"}";
String encodedHeader = Base64.getUrlEncoder().withoutPadding().encodeToString(headerJson.getBytes(StandardCharsets.UTF_8));
String encodedPayload = Base64.getUrlEncoder().withoutPadding().encodeToString(payloadJson.getBytes(StandardCharsets.UTF_8));
System.out.println("Header (Base64Url-encoded):\n" + encodedHeader);
System.out.println("\nPayload (Base64Url-encoded):\n" + encodedPayload);
System.out.println("\nConceptual JWT structure: " + encodedHeader + "." + encodedPayload + ".[Signature]");
}
}Rask sjekk: JWT-deler
De har nettopp lært om de tre viktigste delene av en JSON Web Token (JWT).
Oppsummering: Innlogging og JWT-er
Godt jobbet! De har lært hvordan et innloggingssystem fungerer, og hvilken rolle JSON Web Tokens (JWT-er) spiller i moderne, tilstandsløs autentisering.
- Innlogging innebærer å kontrollere legitimasjon mot hashkede passord.
- JWT-er gir en tilstandsløs måte å håndtere brukerøkter på.
- JWT-er har tre deler: Header, Payload og Signature.
- Signature sikrer tokenets integritet.
Deretter skal vi se på hvordan De kan bruke disse JWT-ene til å beskytte API-rutene Deres!
Lær deg KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Innlogging og generering av JWT-er» gratis?
Ja – hele teksten i «Innlogging og generering av JWT-er» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling-kurset, kan du oppgradere til CoddyKit PRO. Kurset i KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling inneholder totalt 4 leksjoner.
Hva lærer jeg i «Innlogging og generering av JWT-er»?
Bygg et innloggingssystem som utsteder og administrerer JSON Web Tokens (JWT-er) for økthåndtering. Du øver på KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling?
Ingen tidligere erfaring er nødvendig. KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Innlogging og generering av JWT-er»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling-leksjonen?
Ja. Alle KI-drevet SaaS: Stripe + autentisering + fakturering + utrulling-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Brukerregistrering og hashing
- Innlogging og generering av JWT-er
- Beskyttede ruter og middleware
- Tilbakestilling av passord og e-postbekreftelse