Spring Security 6 en JWT-authenticatie · Les

Multi-factorauthenticatie implementeren

Voeg een extra beveiligingslaag toe met MFA, waarbij gebruikers meerdere verificatiemethoden moeten opgeven.

Les 1 van 412 stappen

Multi-factorauthenticatie implementeren is een gratis Spring Security 6 en JWT-authenticatie-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Spring Security 6 en JWT-authenticatie. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Spring Security 6 en JWT-authenticatie bevat in totaal 4 lessen.

Wat is meervoudige authenticatie?

Welkom bij Multi-Factor Authentication (MFA)! MFA voegt een extra beveiligingslaag toe naast alleen een wachtwoord.

Gebruikers moeten ten minste twee verschillende verificatiefactoren opgeven om hun identiteit te bewijzen. Zie het als meer dan één sleutel nodig hebben om een deur te openen.

Waarom MFA belangrijk is

In de huidige digitale wereld zijn wachtwoorden alleen vaak niet voldoende. Datalekken en phishingaanvallen kunnen verificatie met één factor gemakkelijk compromitteren.

MFA verhoogt de beveiliging aanzienlijk doordat het veel moeilijker wordt voor onbevoegde gebruikers om toegang tot accounts te krijgen, zelfs als ze een wachtwoord hebben gestolen. Het is een belangrijke verdediging tegen diefstal van inloggegevens.

MFA-factoren verkennen

MFA maakt gebruik van verschillende categorieën verificatiefactoren:

  • Iets wat je weet: Een wachtwoord, pincode of beveiligingsvraag.
  • Iets wat je hebt: Een fysiek token, smartphone (voor codes uit een app) of smartcard.
  • Iets wat je bent: Biometrische kenmerken, zoals een vingerafdruk, gezichtsscan of stemherkenning.

Een sterke MFA-configuratie combineert factoren uit ten minste twee verschillende categorieën.

Spring Security en MFA

Spring Security biedt een krachtig framework voor verificatie en autorisatie. Hoewel het geen directe, ingebouwde MFA-module heeft, is het zeer uitbreidbaar.

Je kunt MFA integreren door de verificatiestroom aan te passen. Hierbij voeg je doorgaans aangepaste filters, verificatieproviders en gebruikersgegevens toe om de tweede factor af te handelen.

Een tweede factor kiezen: TOTP

Een veelgebruikte en breed toegepaste tweede factor is het Time-based One-Time Password (TOTP). Dit zijn de codes van 6 cijfers die worden gegenereerd door apps zoals Google Authenticator of Authy.

TOTP-codes zijn korte tijd geldig (meestal 30-60 seconden) en zijn gebaseerd op een gedeelde geheime sleutel en de huidige tijd.

Gebruikersregistratie voor TOTP

Het MFA-registratieproces is cruciaal. Eerst genereert je applicatie voor elke gebruiker een unieke geheime sleutel.

Dit geheim wordt vervolgens aan de gebruiker getoond, vaak als QR-code, die deze met de verificatie-app scant. De app slaat het geheim op en gebruikt het om tijdgebaseerde codes te genereren.

MFA-geheimen veilig opslaan

De gegenereerde geheime TOTP-sleutel is zeer gevoelig. Deze moet veilig worden opgeslagen in de database van je applicatie.

Volgens de aanbevolen werkwijze versleutel je deze geheimen wanneer ze niet actief worden gebruikt. Sla ze nooit op als platte tekst! Als een geheim uitlekt, kan een aanvaller geldige TOTP-codes genereren.

Aangepaste verificatieprovider

Om TOTP-verificatie in Spring Security te integreren, maak je vaak een aangepaste AuthenticationProvider.

Deze provider kan na je primaire verificatie met gebruikersnaam en wachtwoord worden aangeroepen. Zodra de eerste factor is geverifieerd, kan de provider de tweede factor controleren (de TOTP-code).

Inloggen verbeteren met een MFA-filter

Een ander belangrijk onderdeel is een aangepast Spring Security-filter, dat doorgaans OncePerRequestFilter uitbreidt.

Dit filter onderschept aanvragen na de primaire verificatie, maar voordat volledige toegang wordt verleend. Als MFA voor een gebruiker is ingeschakeld, kan het filter deze doorsturen naar een speciale MFA-verificatiepagina om de TOTP-code in te voeren.

Demonstratie van TOTP-verificatielogica

Hier volgt een vereenvoudigd voorbeeld dat het basisidee achter TOTP-codeverificatie laat zien. In een echte app zou een speciale bibliotheek de tijdgebaseerde berekening afhandelen.

Probeer het uit te voeren om te zien hoe een ingediende code conceptueel wordt vergeleken met een verwachte code.

public class TotpVerificationDemo {
  // In a real application, 'userSecret' would be securely stored per user
  private static final String USER_SECRET = "ABCDEFG12345"; // Example secret

  public static void main(String[] args) {
    System.out.println("--- TOTP Verification Demo ---");
    System.out.println("Imagine a user has this secret configured in their authenticator app.");
    
    // Simulate a TOTP code entered by the user
    int userSubmittedCode = 123456; // This would come from the user's input

    System.out.println("\nUser submitted code: " + userSubmittedCode);

    // In a real scenario, a TOTP library would generate
    // the expected code based on the secret and current time.
    // For this demo, let's assume a 'valid' code for the current window.
    int expectedCodeFromLibrary = 123456; // This changes every ~30s in real TOTP

    boolean isValid = checkTotpCode(USER_SECRET, userSubmittedCode, expectedCodeFromLibrary);

    if (isValid) {
      System.out.println("Verification SUCCESS: TOTP code is valid!");
    } else {
      System.out.println("Verification FAILED: TOTP code is invalid.");
    }
  }

  // This method simulates the check a TOTP library would perform.
  // In reality, 'expectedCode' would be calculated dynamically.
  public static boolean checkTotpCode(String secret, int submittedCode, int expectedCode) {
    // A real TOTP library checks submittedCode against expectedCode
    // and potentially codes from adjacent time windows (for clock skew).
    // For this simplified demo, we just check for equality.
    return submittedCode == expectedCode;
  }
}

Snelle MFA-controle

Welke van de volgende opties beschrijft een factor van het type 'bezit' bij Multi-Factor Authentication?

Samenvatting van de MFA-les

Goed gedaan! Je hebt de basisprincipes van Multi-Factor Authentication geleerd en gezien hoe je de implementatie ervan binnen een Spring Security-applicatie kunt aanpakken.

  • MFA voegt belangrijke beveiligingslagen toe.
  • Het maakt gebruik van 'iets wat je weet, hebt of bent'.
  • TOTP is een populaire en effectieve tweede factor.
  • Dankzij de uitbreidbaarheid van Spring Security kun je aangepaste filters en providers gebruiken om MFA te integreren.
  • Veilige opslag van MFA-geheimen is van het grootste belang.

Vervolgens bekijken we hoe je je applicatie tegen misbruik kunt beschermen met behulp van snelheidsbeperking!

Gratis beginnen

Leer Java met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Multi-factorauthenticatie implementeren” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Spring Security 6 en JWT-authenticatie, waaronder “Multi-factorauthenticatie implementeren”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Spring Security 6 en JWT-authenticatie bevat in totaal 4 lessen.

Wat leer ik in “Multi-factorauthenticatie implementeren”?

Voeg een extra beveiligingslaag toe met MFA, waarbij gebruikers meerdere verificatiemethoden moeten opgeven. Je oefent met Spring Security 6 en JWT-authenticatie door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Spring Security 6 en JWT-authenticatie te beginnen?

Ervaring vooraf is niet nodig. Spring Security 6 en JWT-authenticatie op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Multi-factorauthenticatie implementeren”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Spring Security 6 en JWT-authenticatie?

Ja. Elke les over Spring Security 6 en JWT-authenticatie bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Multi-factorauthenticatie implementeren
  2. API-toegang rate-limiten
  3. Aangepaste afhandeling van authenticatiegebeurtenissen
  4. Accountvergrendeling en bescherming tegen brute-forceaanvallen
← Terug naar Spring Security 6 en JWT-authenticatie