AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning · Lektion

Inloggning och generering av JWT

Bygg ett system för användarinloggning som utfärdar och hanterar JSON Web Tokens (JWT:er) för sessionshantering.

Lektion 2 av 412 steg

Inloggning och generering av JWT är en gratis lektion i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning innehåller totalt 4 lektioner.

Välkommen till inloggningssystem

I den föregående lektionen lärde vi oss om användarregistrering och säker hashning av lösenord. Nu är det dags att bygga inloggningssystemet!

Ett inloggningssystem gör det möjligt för autentiserade användare att få åtkomst till skyddade resurser och anpassa sin upplevelse i er SaaS-applikation.

Så fungerar inloggning (översikt)

När en användare försöker logga in anger hen vanligtvis ett användarnamn (eller en e-postadress) och ett lösenord. Det grundläggande flödet ser ut så här:

  • Klienten (till exempel er mobilapp) skickar inloggningsuppgifterna till servern.
  • Servern verifierar uppgifterna mot de lagrade användardata.
  • Om uppgifterna är giltiga beviljar servern åtkomst.

Verifiera användaruppgifter

När servern tar emot inloggningsuppgifter måste den utföra en viktig kontroll:

  1. Hitta användaren med hjälp av den unika identifieraren (till exempel e-postadress eller användarnamn).
  2. Hämta det lagrade hashade lösenordet för användaren.
  3. Jämför det angivna lösenordet (efter att ha hashas med samma metod) med det lagrade hashade lösenordet.

Lagra aldrig lösenord i klartext! Hasha och salta dem alltid, enligt det vi gick igenom i lektionen om registrering.

Utmaningen: tillståndslösa API:er

Moderna API:er är ofta tillståndslösa, vilket innebär att servern inte kommer ihåg tidigare förfrågningar från samma klient. Det gör API:er skalbara, men skapar en utmaning för användarautentisering.

Hur vet vi att en användare som nyss loggade in fortfarande är autentiserad vid nästa förfrågan, utan att skicka inloggningsuppgifter varje gång?

Introduktion till JSON Web Tokens (JWT)

JSON Web Tokens (JWT) är ett kompakt och URL-säkert sätt att representera anspråk som ska överföras mellan två parter. De passar utmärkt för tillståndslös autentisering.

I stället för sessioner på serversidan utfärdar servern en JWT efter en lyckad inloggning. Klienten lagrar sedan denna token och skickar med den i varje efterföljande förfrågan.

JWT-struktur: header

En JWT består av tre delar som separeras med punkter: Header, Payload och Signature.

Header innehåller vanligtvis två delar:

  • typ (typen av token, vanligtvis 'JWT')
  • alg (signeringsalgoritmen, till exempel 'HS256' för HMAC SHA256)

Det är ett JSON-objekt som kodats med Base64Url.

{"alg":"HS256","typ":"JWT"}

JWT-struktur: payload (anspråk)

Payload innehåller så kallade 'claims' – påståenden om en entitet (vanligtvis användaren) samt ytterligare data.

Claims kan vara:

  • Registrerade: Standardfält som sub (subjekt), exp (förfallotid) och iat (tidpunkt då den utfärdades).
  • Publika: Anpassade claims som definieras av er, men registreras i IANA:s register för JSON Web Token.
  • Privata: Anpassade claims som parterna som använder dem har kommit överens om, till exempel userId eller role.

Exempel på payload:

{"sub":"12345","name":"Coddy User","exp":1700000000}

JWT-struktur: signature

Signature är avgörande för att verifiera tokenens integritet. Den skapas genom att den kodade headern, den kodade payloaden och en hemlig nyckel bearbetas med algoritmen som anges i headern.

Om någon försöker manipulera headern eller payloaden misslyckas signaturverifieringen, vilket gör token ogiltig. Den hemliga nyckeln är endast känd av servern.

Skapa en JWT (konceptuellt)

När servern har verifierat en användares inloggningsuppgifter skapar den en JWT. Det innebär att:

  1. JSON-objekten Header och Payload skapas.
  2. Båda kodas med Base64Url.
  3. De sammanfogas med en punkt.
  4. Den sammanfogade strängen signeras med en hemlig nyckel och den valda algoritmen för att skapa Signature.

Den slutliga JWT:n är EncodedHeader.EncodedPayload.Signature.

Exempel på skapande av JWT

Fullständig JWT-signering kräver ett bibliotek, men vi kan demonstrera Base64-kodningen som en del av att bygga en JWT-sträng. Det säkerställer att token är URL-säker.

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]");
  }
}

Snabbtest: JWT-delar

Ni har just lärt er om de tre huvuddelarna i en JSON Web Token (JWT).

Sammanfattning: inloggning och JWT:er

Bra jobbat! Ni har lärt er hur ett inloggningssystem fungerar och vilken roll JSON Web Tokens (JWT:er) har i modern, tillståndslös autentisering.

  • Inloggning innebär att inloggningsuppgifter verifieras mot hashade lösenord.
  • JWT:er ger ett tillståndslöst sätt att hantera användarsessioner.
  • JWT:er har tre delar: Header, Payload och Signature.
  • Signature säkerställer tokenens integritet.

Härnäst undersöker vi hur ni kan använda dessa JWT:er för att skydda era API-rutter!

Gratis att börja

Lär dig AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Inloggning och generering av JWT” gratis?

Ja – hela texten till ”Inloggning och generering av JWT” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning, kan Ni uppgradera till CoddyKit PRO. Kursen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning innehåller totalt 4 lektioner.

Vad lär jag mig i ”Inloggning och generering av JWT”?

Bygg ett system för användarinloggning som utfärdar och hanterar JSON Web Tokens (JWT:er) för sessionshantering. Ni övar på AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning?

Du behöver inga förkunskaper. Utbildningen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Inloggning och generering av JWT”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning-lektionen?

Ja. Varje AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Användarregistrering och hashing
  2. Inloggning och generering av JWT
  3. Skyddade routes och middleware
  4. Lösenordsåterställning och e-postverifiering
← Tillbaka till AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning