WebAuthn implementeren in Next.js: Een praktische gids
Een praktische gids voor het implementeren van WebAuthn in Next.js met live codevoorbeelden.
Een praktische gids voor het implementeren van WebAuthn in Next.js met live codevoorbeelden.
Welkom terug bij onze WebAuthn-serie. In onze vorige artikelen hebben we de basis van WebAuthn en een 101-gids behandeld. Als je net instapt, voel je vrij om deze fundamentele stukken te bekijken om bij te lezen.
Vandaag stropen we onze mouwen op om de theorie in praktijk te brengen. We benutten de kracht van Next.js met de nieuwe functie "Server Actions". Ons doel? Om WebAuthn te implementeren in een Next.js-applicatie en onszelf voor te bereiden op WebAuthn.
Voordat we de codezee induiken, hier is een glimp van wat je te wachten staat aan het einde van de reis - een volledig functionele demo website. Verken het om WebAuthn in actie te zien en om een voorproefje te krijgen van wat je gaat bouwen. In deze demo website kun je nieuwe gebruikers registreren en inloggen met de pas geregistreerde passkeys.

En voor degenen die liever een kaart in de hand hebben, hebben we je gedekt! Alle code die we zullen bespreken is beschikbaar in een publieke GitHub-repository. Deze repository is je begeleidende gids en biedt de volledige broncode van onze implementatie.
Klaar om aan dit spannende avontuur te beginnen? Laten we beginnen!
Voordat we beginnen, laten we ervoor zorgen dat we alles hebben wat we nodig hebben:
@simplewebauthn/browser, @simplewebauthn/server en @simplewebauthn/typescript-types te installeren.Nu, met onze gereedschappen en materialen bij de hand, zijn we klaar om te gaan bouwen.
Het is eenvoudig om een KV-opslag zowel in productie als lokale ontwikkeling te initialiseren, volg deze handleiding om een KV-opslag aan je project te koppelen en de omgevingswaarden te halen: https://vercel.com/docs/storage/vercel-kv/quickstart
We exporteerden 2 functies:
getCurrentSession: Gebruik de cookie-helper van Next.js om een sessie te maken voor het huidige verzoek en geef de waarde terug.updateCurrentSession: Data opslaan in de huidige sessie.Net als bij onze sessie-implementatie, laten we een eenvoudige gebruikersdatabase implementeren.
We hebben functies gecreëerd om een gebruiker op te zoeken via e-mail en om gebruikersgegevens via e-mail bij te werken. Onthoud dat dit alleen voor demonstratie is, in een echt product worden de gebruikersgegevens meestal in een database bewaard.
Voordat we verdergaan, laten we het diagram van de registratie- en authenticatiestroom bekijken:
Zoals je kunt zien, moeten we 2 functies voorbereiden:
generateWebAuthnRegistrationOptionsverifyWebAuthnRegistrationNet als bij registratie vereist het inloggen 2 functies:
generateWebAuthnLoginOptionsverifyWebAuthnLoginHier is de code:
We hebben de voorbereiding voltooid, laten we de pagina bouwen:
Gefeliciteerd met het navigeren door de complexiteiten van het implementeren van WebAuthn in een Next.js-applicatie. Terwijl we afronden, is het belangrijk om enkele cruciale overwegingen aan te pakken voor het implementeren in een productieomgeving.
userId of username.Bedankt dat je met ons mee bent gegaan op dit educatieve avontuur. Zelfs in dit minimale voorbeeld is het integreren van WebAuthn geen eenvoudige taak, er is een andere optie, probeer WebAuthn in Logto’s MFA: