Implementación de WebAuthn en Next.js: Una guía práctica
Una guía práctica para implementar WebAuthn en Next.js con ejemplos de código en vivo.
Una guía práctica para implementar WebAuthn en Next.js con ejemplos de código en vivo.
Bienvenido de nuevo a nuestra serie de WebAuthn. En nuestros artículos anteriores, hemos cubierto los conceptos básicos de WebAuthn y una guía 101. Si te unes a nosotros justo ahora, siéntete libre de revisar estos fundamentos para ponerte al día.
Hoy, vamos a arremangarnos para poner la teoría en práctica. Aprovecharemos el poder de Next.js con la nueva característica "Acciones del servidor". ¿Nuestro objetivo? Implementar WebAuthn en una aplicación Next.js y prepararnos para WebAuthn.
Antes de sumergirnos en el mar del código, aquí tienes un vistazo de lo que te espera al final del viaje: un sitio web de demostración completamente funcional. Explóralo para ver WebAuthn en acción y para probar lo que estarás construyendo. En este sitio de demostración, puedes registrar nuevos usuarios e iniciar sesión con las llaves de paso recién registradas.

Y para aquellos que prefieren un mapa en mano, ¡te tenemos cubierto! Todo el código del que hablaremos está disponible en un repositorio público de GitHub. Este repositorio es tu guía compañera, ofreciendo el código fuente completo de nuestra implementación.
¿Listo para embarcarte en esta emocionante aventura? ¡Comencemos!
Antes de comenzar, asegúrate de tener todo lo que necesitas:
@simplewebauthn/browser, @simplewebauthn/server y @simplewebauthn/typescript-typesAhora, con nuestras herramientas y materiales a mano, estamos listos para comenzar a construir.
Es fácil inicializar un almacenamiento KV tanto en producción como en desarrollo local, sigue esta guía para conectar una tienda KV a tu proyecto y obtener los valores del entorno: https://vercel.com/docs/storage/vercel-kv/quickstart
Exportamos 2 funciones:
getCurrentSession: Usa el asistente de cookies de Next.js para crear una sesión para la solicitud actual y devuelve el valor.updateCurrentSession: Guarda los datos en la sesión actual.De manera similar a nuestra implementación de sesión, implementemos una simple base de datos de usuarios.
Creamos funciones para buscar usuarios por correo electrónico y actualizar los datos de los usuarios por correo electrónico. Recuerda, esto es solo para demostración, en el producto real, los datos de usuario generalmente se mantienen en una base de datos.
Antes de continuar, veamos el diagrama del flujo de registro y autenticación:
Como puedes ver, necesitamos preparar 2 funciones:
generateWebAuthnRegistrationOptionsverifyWebAuthnRegistrationSimilar al registro, el inicio de sesión requiere 2 funciones:
generateWebAuthnLoginOptionsverifyWebAuthnLoginAquí está el código:
Hemos completado la preparación, construyamos la página:
Felicitaciones por navegar a través de las complejidades de implementar WebAuthn en una aplicación Next.js. Al concluir, es importante abordar algunas consideraciones cruciales para desplegarlo en un entorno de producción.
userId o nombre de usuario.Gracias por unirte a nosotros en esta aventura educativa. Incluso en este ejemplo mínimo, integrar WebAuthn no es una tarea simple, hay otra opción, prueba WebAuthn en el MFA de Logto: