Implementera WebAuthn i Next.js: En praktisk guide
En praktisk guide för att implementera WebAuthn i Next.js med levande kodexempel.
En praktisk guide för att implementera WebAuthn i Next.js med levande kodexempel.
Välkommen tillbaka till vår WebAuthn-serie. I våra tidigare artiklar har vi täckt WebAuthns grunder och en 101-guide. Om du just har anslutit dig till oss, är du välkommen att kolla in dessa grundläggande delar för att komma ikapp.
Idag kavlar vi upp ärmarna för att omsätta teori till praktik. Vi kommer att använda kraften hos Next.js med den nya funktionen "Server Actions". Vårt mål? Att implementera WebAuthn i en Next.js-applikation och förbereda oss för WebAuthn.
Innan vi dyker ner i kodningshavet, här är en glimt av vad som väntar dig i slutet av resan - en fullt fungerande demosajt. Utforska den för att se WebAuthn i aktion och för att få en smak av vad du kommer att bygga. På denna demosajt kan du registrera nya användare och logga in med just registrerade passnycklar.

Och för dem som föredrar en karta i handen har vi dig täckt! All kod vi kommer att diskutera finns tillgänglig i ett offentligt GitHub-repository. Detta repository är din följeslagare, och erbjuder hela källkoden för vår implementation.
Redo att ge dig ut på detta spännande äventyr? Låt oss börja!
Innan vi börjar, låt oss säkerställa att vi har allt vi behöver:
@simplewebauthn/browser, @simplewebauthn/server och @simplewebauthn/typescript-types.Nu, med våra verktyg och material i handen, är vi redo att börja bygga.
Det är enkelt att initiera en KV-lagring både i produktion och lokal utveckling, följ denna guide för att ansluta en KV-butik till ditt projekt och dra miljövärden: https://vercel.com/docs/storage/vercel-kv/quickstart
Vi exporterade 2 funktioner:
getCurrentSession: Använd Next.js cookiehelper för att skapa en session för nuvarande begäran, och returnera värdet.updateCurrentSession: Spara data till nuvarande session.På samma sätt som vår sessionsimplementation, låt oss implementera en enkel användardatabas.
Vi skapade funktioner för att hitta användare via e-post och uppdatera användardata via e-post. Kom ihåg, detta är endast för demonstration, i verkliga produkter hålls användardata vanligtvis i en databas.
Innan vi fortsätter, låt oss se diagrammet för registrerings- och autentiseringsflöde:
Som du kan se, behöver vi förbereda 2 funktioner:
generateWebAuthnRegistrationOptionsverifyWebAuthnRegistrationPå samma sätt som registreringen, kräver inloggningen 2 funktioner:
generateWebAuthnLoginOptionsverifyWebAuthnLoginHär är koden:
Vi har slutfört förberedelsen, låt oss bygga sidan:
Grattis till att ha navigerat genom invecklingarna med att implementera WebAuthn i en Next.js-applikation. När vi avslutar är det viktigt att ta itu med några viktiga överväganden för att distribuera det i en produktionsmiljö.
userId eller användarnamn.Tack för att du följde med oss på detta utbildningsäventyr. Även i detta minimala exempel är det inte en enkel uppgift att integrera WebAuthn, det finns ett annat alternativ, prova WebAuthn i Logtos MFA: