En un mundo digital cada vez más expuesto a vulnerabilidades, una sola contraseña ya no es suficiente. La autenticación en dos factores (2FA) añade una segunda capa de seguridad, asegurando que incluso si las credenciales de un usuario son robadas, un atacante no pueda acceder sin el segundo factor de verificación.
Laravel, con sus Starter Kits oficiales (Breeze, Jetstream y Fortify), facilita la implementación de 2FA de manera estructurada y moderna. En esta guía, aprenderás cómo habilitar y configurar la autenticación en dos factores paso a paso, tanto en el backend como en la interfaz de usuario.
¿Qué es la autenticación en dos factores (2FA)?
La autenticación en dos factores consiste en combinar dos métodos diferentes de verificación antes de permitir el acceso a un sistema:
Algo que el usuario sabe: como su contraseña.
Algo que el usuario tiene: como su teléfono o aplicación autenticadora.
Este enfoque fortalece el proceso de inicio de sesión al requerir un segundo token dinámico, generalmente generado por una app como Google Authenticator o Authy, que cambia cada 30 segundos.
Estructura básica de los Starter Kits
Laravel ofrece varios Starter Kits para autenticación:
Laravel Breeze: Ligero, simple y ideal para proyectos pequeños o medianos.
Laravel Jetstream: Más avanzado, con soporte nativo para 2FA, sesiones, perfiles y administración de equipos.
Laravel Fortify: Enfocado solo en el backend, ideal para proyectos con front-end propio (React, Vue, Inertia).
Aunque cada kit tiene sus diferencias, todos pueden extenderse para integrar autenticación multifactor.
Implementación paso a paso con Laravel Breeze
Laravel Breeze es el punto de partida más sencillo. A continuación, se muestra cómo añadir autenticación en dos pasos manualmente usando Google2FA.
1. Instalar dependencias
composer require pragmarx/google2fa-laravel
2. Agregar el trait en el modelo User
use PragmaRX\Google2FALaravel\Support\TwoFactorAuthenticatable; class User extends Authenticatable { use TwoFactorAuthenticatable; }
3. Configurar las vistas
Crea una sección en el perfil del usuario donde pueda:
Activar o desactivar 2FA.
Escanear el código QR generado.
Ver sus códigos de respaldo (backup codes).
Ejemplo:
$google2fa = app('pragmarx.google2fa'); $QR_Image = $google2fa->getQRCodeInline( config('app.name'), $user->email, $user->google2fa_secret );
Luego, en la vista:
<img src="{{ $QR_Image }}" alt="QR Code">
Implementación con Jetstream
Jetstream es el más completo, ya que integra 2FA de forma nativa.
1. Habilita la función en config/fortify.php
config/fortify.php'features' => [ Features::twoFactorAuthentication([ 'confirmPassword' => true, ]), ],
2. Usa la interfaz incluida
Jetstream incluye todo lo necesario:
Escaneo de código QR.
Códigos de recuperación.
Habilitar o deshabilitar 2FA desde la cuenta del usuario.
Laravel genera automáticamente los secretos TOTP, los QR codes, y los códigos de recuperación usando
Google2FA.3. Flujo de verificación
Cuando un usuario inicia sesión:
Introduce su correo y contraseña.
Si 2FA está habilitado, Laravel muestra una pantalla adicional para ingresar el código OTP.
Al verificar, Laravel crea una sesión válida y marca el dispositivo como “recordado”.
Implementación con Fortify
Si prefieres controlar el frontend tú mismo (por ejemplo, con Inertia o React), Fortify te da la capa lógica.
1. Habilita 2FA
'features' => [ Features::twoFactorAuthentication(), ],
2. Implementa tus propias vistas o pantallas móviles
Fortify expone los endpoints:
/user/two-factor-authentication/two-factor-challenge
Puedes conectarlos desde tu frontend para mostrar el flujo de escaneo, ingreso de OTP y recuperación de códigos.
Buenas prácticas para usar 2FA en Laravel
Guarda los códigos de respaldo cifrados.
Permite recordar dispositivos durante un número limitado de días.
Verifica la sincronización de hora del servidor para evitar falsos rechazos de OTP.
Registra eventos de verificación y acceso fallido.
Nunca envíes códigos de recuperación por correo electrónico.
Conclusión
Implementar 2FA en Laravel es una mejora de seguridad esencial en cualquier aplicación moderna. Gracias a los Starter Kits, puedes hacerlo de forma rápida, elegante y segura, sin depender de paquetes externos complicados.
Ya sea con Jetstream, Breeze o Fortify, Laravel ofrece una base sólida para incorporar autenticación multifactor.
Protege tus usuarios, cumple estándares modernos y demuestra profesionalismo en tus desarrollos.
Replaces 25+ Expensive AI Subscriptions
With ONE Smart AI Command Center
Run Your Entire Online Business:
Design, Write, Code, Market, Sell & Automate — All From One Platform.
Save $6,000+/Year | No Monthly Fees | 0% Effort → 100% Profit
https://cqxqlbe.site/AITitan?laravelconmanuel.dev
You received this notification
because we think
what we’re offering
may interest you.
If you don’t want to receive
any more messages from us,
you can
unsubscribe from these emails:
https://cqxqlbe.site/unsub?domain=laravelconmanuel.dev
Address: Address: 3013 Slotsgade 57, REGION MIDTJYLLAND 8250
Looking out for you, Mellisa Wise.