Mettre en œuvre WebAuthn dans Next.js : Un guide pratique
Un guide pratique pour mettre en œuvre WebAuthn dans Next.js avec des exemples de code en direct.
Un guide pratique pour mettre en œuvre WebAuthn dans Next.js avec des exemples de code en direct.
Bienvenue à nouveau dans notre série WebAuthn. Dans nos articles précédents, nous avons couvert les bases de WebAuthn et un guide 101. Si tu nous rejoins juste, n'hésite pas à consulter ces articles de base pour te mettre à niveau.
Aujourd'hui, nous retroussons nos manches pour mettre la théorie en pratique. Nous allons exploiter la puissance de Next.js avec la nouvelle fonctionnalité "Server Actions". Notre objectif ? Mettre en œuvre WebAuthn dans une application Next.js et nous préparer pour WebAuthn.
Avant de plonger dans le codage, voici un aperçu de ce qui t'attend à la fin du voyage - un site de démonstration entièrement fonctionnel. Explore-le pour voir WebAuthn en action et avoir un avant-goût de ce que tu vas construire. Dans ce site de démonstration, tu peux enregistrer de nouveaux utilisateurs et te connecter avec les passkeys juste enregistrées.

Et pour ceux qui préfèrent une carte en main, nous avons ce qu'il te faut ! Tout le code que nous allons discuter est disponible dans un dépôt GitHub public. Ce dépôt est ton guide compagnon, offrant le code source complet de notre mise en œuvre.
Prêt pour cette aventure passionnante ? Allons-y !
Avant de commencer, assurons-nous d'avoir tout ce dont nous avons besoin :
@simplewebauthn/browser, @simplewebauthn/server et @simplewebauthn/typescript-typesMaintenant, avec nos outils et matériaux à portée de main, nous sommes prêts à commencer à construire.
Il est facile d'initialiser un stockage KV à la fois en production et en développement local, suis ce guide pour connecter un magasin KV à ton projet et extraire les valeurs d'environnement : https://vercel.com/docs/storage/vercel-kv/quickstart
Nous avons exporté 2 fonctions :
getCurrentSession: Utilise l'assistant de cookies Next.js pour créer une session pour la requête actuelle et retourner la valeur.updateCurrentSession: Enregistre les données dans la session actuelle.Similairement à notre implémentation de session, implémentons une base de données utilisateurs simple.
Nous avons créé des fonctions pour trouver un utilisateur par e-mail et mettre à jour les données utilisateur par e-mail. Souviens-toi, c'est uniquement à des fins de démonstration, dans le produit réel, les données utilisateurs sont généralement conservées dans une base de données.
Avant de continuer, voyons le diagramme du flux d'enregistrement et d'authentification :
Comme tu peux le voir, nous devons préparer 2 fonctions :
generateWebAuthnRegistrationOptionsverifyWebAuthnRegistrationDe même que pour l'enregistrement, la connexion nécessite 2 fonctions :
generateWebAuthnLoginOptionsverifyWebAuthnLoginVoici le code :
Nous avons terminé la préparation, construisons la page :
Félicitations pour avoir navigué à travers les complexités de la mise en œuvre de WebAuthn dans une application Next.js. Alors que nous terminons, il est important d'aborder quelques considérations cruciales pour le déploiement en production.
userId ou username.Merci de nous avoir rejoints pour cette aventure éducative. Même dans cet exemple minimal, intégrer WebAuthn n'est pas une tâche simple, il existe une autre option, essaie WebAuthn dans la MFA de Logto :