posts/D7jDzLSsU1tXuXO1cClylvAFQOqgSsos9f495Awo.png

Autenticación de dos factores (2FA) en Laravel: Guía práctica con Starter Kits

Aprende a implementar la autenticación de dos factores (2FA) en Laravel usando los Starter Kits oficiales (Breeze, Jetstream, Fortify). Mejora la seguridad de tus aplicaciones con OTP, códigos QR y verificación de dispositivos, paso a paso.

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:

  1. Algo que el usuario sabe: como su contraseña.

  2. 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

'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:

  1. Introduce su correo y contraseña.

  2. Si 2FA está habilitado, Laravel muestra una pantalla adicional para ingresar el código OTP.

  3. 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

  1. Guarda los códigos de respaldo cifrados.

  2. Permite recordar dispositivos durante un número limitado de días.

  3. Verifica la sincronización de hora del servidor para evitar falsos rechazos de OTP.

  4. Registra eventos de verificación y acceso fallido.

  5. 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.

Comparte esta publicación

4 comentarios

Únete a la conversación y comparte tu experiencia.

Mellisa Wise
2 days ago

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.

Joanna Riggs
2 days ago

Hi,

I just visited laravelconmanuel.dev and wondered if you'd ever thought about having an engaging video to explain what you do?

Our videos cost just $195 (USD) for a 30 second video ($239 for 60 seconds) and include a full script, voice-over and video.

I can show you some previous videos we've done if you want me to send some over. Let me know if you're interested in seeing samples of our previous work.

Regards,
Joanna

Unsubscribe: https://unsubscribe.video/unsubscribe.php?d=laravelconmanuel.dev

Anneliese McCorkle
1 day ago

Want to attract more people to laravelconmanuel.dev now? Start your Free Test.

Main site here: https://rb.gy/kkhq2m










To unsubscribe, please reply with subject: Unsubscribe !laravelconmanuel.dev

Carina Kohlmeier
1 day ago

World's First AI App That Lets You...
Build Funnels Inside Reels, Shorts & TikToks
That Capture Leads, Clicks & Sales
Without Pages, Funnel Builders Or Tech
100% Done For You By AI
Making Us $575- $1895 Daily
Instantly adds sales forms, affiliate buy links, CTA buttons & offer overlays
inside any video Turning viewers into paying customers and commissions on autopilot

https://burto.site/VideoFunnelsAI?laravelconmanuel.dev












You are getting this email
as we believe
this offer
may interest you.

If you no longer wish to get
future messages from us,
you can
unsubscribe from these emails:

https://burto.site/unsub?domain=laravelconmanuel.dev
Address: Address: 2678 Stubengraben 35, BURGENLAND 7521
Looking out for you, Carina Kohlmeier.

Dejar un comentario

Comparte dudas, propuestas o mejoras para la comunidad.