Ver todos los proyectos
Caso / 06Desarrollador Full Stack

Passkeys

Contexto

Sistema demostrativo de autenticación sin contraseñas que usa Passkeys para reemplazar el inicio de sesión tradicional por una verificación segura del dispositivo.

Passkeys

Reto

Las contraseñas se reutilizan, se filtran y son vulnerables al phishing, pero una alternativa passwordless no puede limitarse a cambiar un botón: debe resolver registro, sesiones, recuperación y acciones sensibles sin crear nuevos puntos débiles. El reto era demostrar un flujo comprensible para quien usa la aplicación y sólido para quien revisa su arquitectura.

Enfoque

Construí el frontend con Next.js y WebAuthn para que el navegador y el sistema operativo custodien la clave privada; el backend NestJS solo almacena la credencial pública y verifica las respuestas firmadas. Las sesiones usan tokens opacos guardados únicamente como hash y cookies HttpOnly. Google OAuth se valida en servidor usando el subject de Google, mientras que OTP, Magic Links y códigos de respaldo permiten recuperar el acceso sin introducir contraseñas. PostgreSQL y Prisma persisten los retos y estados necesarios, y las operaciones sensibles exigen una verificación step-up reciente con Passkey o Google.

Resultado

Una demostración full stack que explica y permite probar autenticación resistente al phishing sin transmitir ni almacenar contraseñas. El proyecto deja documentados los límites de una implementación educativa, la relación entre frontend y API y las decisiones necesarias para evolucionar hacia un despliegue HTTPS con un RP ID estable.

Responsabilidades

  • - Diseño de una experiencia educativa que compara la autenticación tradicional con Passkeys y guía el registro mediante la interfaz nativa del navegador
  • - Integración de ceremonias WebAuthn con SimpleWebAuthn para registrar credenciales discoverable e iniciar sesión sin usuario ni contraseña
  • - API NestJS con Prisma y PostgreSQL para usuarios, credenciales, sesiones opacas, retos WebAuthn, Google OAuth y recuperación de acceso
  • - Protección de sesiones mediante cookies HttpOnly, CORS restringido, CSRF, rate limiting y validación de origen y RP ID
  • - Flujos de recuperación con OTP, Magic Link y códigos de respaldo, separados de la sesión normal mediante RecoverySession
  • - Dashboard responsive para administrar Passkeys, Google, recuperación, sesiones activas y verificaciones adicionales step-up

Tecnologías

NextJS
TypeScript
NestJS
PostgreSQL
Prisma
WebAuthn