Este artículo es una investigación inicial basada en los README de
laravel/passkeys-server y laravel/passkeys. Ambos paquetes se encuentran en fase de desarrollo sin tags (a fecha de abril de 2026).¿Qué son estos paquetes?
En repositorios oficiales de Laravel se han publicado dos paquetes para implementar autenticación sin contraseña (WebAuthn / passkeys).- Lado servidor (PHP):
laravel/passkeys-server - Lado cliente (JavaScript):
@laravel/passkeys
Lado servidor: laravel/passkeys-server
Instalación y configuración inicial
Si lo necesitas, también puedes publicar el archivo de configuración.Rutas registradas automáticamente
| Categoría | Método | Ruta | Rol |
|---|---|---|---|
| Login (guest) | GET | /passkeys/login/options | Obtiene las opciones de autenticación |
| Login (guest) | POST | /passkeys/login | Verifica la passkey e inicia sesión |
| Confirm (auth) | GET | /passkeys/confirm/options | Obtiene las opciones de confirmación |
| Confirm (auth) | POST | /passkeys/confirm | Confirmación con passkey |
| Management (auth) | GET | /user/passkeys/options | Obtiene las opciones de registro |
| Management (auth) | POST | /user/passkeys | Guarda una nueva passkey |
| Management (auth) | DELETE | /user/passkeys/{passkey} | Elimina una passkey |
Principales opciones de config/passkeys.php
relying_party_idallowed_originsuser_handle_secrettimeoutguardmiddlewarethrottleredirect
Eventos
El paquete dispara los siguientes eventos.PasskeyRegisteredPasskeyVerifiedPasskeyDeleted
Puntos de personalización
CustomActions (sustitución del procesamiento WebAuthn)
CustomActions (sustitución del procesamiento WebAuthn)
Puedes extender
GenerateRegistrationOptions / GenerateVerificationOptions / StorePasskey / VerifyPasskey / DeletePasskey, enlazarlos en el service container y sustituir el comportamiento.CustomResponses (sustitución de respuestas)
CustomResponses (sustitución de respuestas)
Implementa por tu cuenta contratos como
PasskeyLoginResponse para adaptar la respuesta en caso de éxito (JSON, redirect, etc.) a los requisitos de tu app.Lado cliente: @laravel/passkeys
@laravel/passkeys es un cliente JavaScript que maneja la ceremonia WebAuthn del lado del navegador.
Instalación
API básica
Helpers por framework
- React:
usePasskeyVerify,usePasskeyRegisterdesde@laravel/passkeys/react - Vue:
usePasskeyVerify,usePasskeyRegisterdesde@laravel/passkeys/vue - Svelte:
usePasskeyVerify,usePasskeyRegisterdesde@laravel/passkeys/svelte
Autocompletado de passkeys
Al indicarautofill: true, en los inputs que tengan autocomplete="... webauthn" se puede mostrar el selector de passkeys del navegador. En entornos no soportados o si el usuario cancela, cae al flujo normal.
Errores tipados
En el README se publican las siguientes clases de error.NotSupportedErrorUserCancelledErrorPasskeyExistsErrorPasskeyError(clase base)
Soporte SSR
WebAuthn es una API del navegador, pero los hooks de cada framework son SSR-safe. En el lado servidorisSupported se trata como false y, tras el mount, se actualiza al estado real del navegador.
Conclusión
- Combinando
laravel/passkeys-server(PHP) y@laravel/passkeys(JS), se puede construir en Laravel una stack de autenticación con passkeys completa. - Ambos están en fase de desarrollo sin tags, pero, como ecosistema oficial de Laravel, existe una alta probabilidad de que se conviertan en el método de autenticación estándar en el futuro.
- Si vas a adoptarlo pronto, es prudente diseñar teniendo como referencia las rutas, la configuración, el manejo de errores y los puntos de extensibilidad del README.
Posteriormente, passkeys se ha añadido oficialmente como funcionalidad de Laravel Fortify. Si activas las passkeys vía Fortify, en lugar de instalar directamente
laravel/passkeys-server, usa Features::passkeys(). Consulta los detalles en Laravel Fortify y los starter kits.laravel/passkeys-server
Consulta el README más reciente y la implementación del paquete del lado servidor.
@laravel/passkeys
Consulta el README más reciente y la API del paquete del lado cliente.
Laravel Fortify y los starter kits
Se explican el procedimiento para activar passkeys vía Fortify y la relación con los starter kits.