Next.js: Autenticación segura en dos pasos
Implementa autenticación de dos factores en Next.js para mejorar la seguridad.
¿Te preocupa la seguridad de tus usuarios en Next.js? Implementar autenticación de dos factores (2FA) puede evitar muchos dolores de cabeza.
El truco
// ANTES: Autenticación básica
export default async function login(req, res) {
const { username, password } = req.body;
const user = await findUser(username, password);
if (user) {
// Mala práctica: sesión sin 2FA
req.session.user = user;
res.status(200).json({ message: 'Logged in' });
} else {
res.status(401).json({ message: 'Unauthorized' });
}
}
// DESPUÉS: Implementación de 2FA
import speakeasy from 'speakeasy';
export default async function login(req, res) {
const { username, password, token } = req.body;
const user = await findUser(username, password);
if (user) {
const verified = speakeasy.totp.verify({
secret: user.twoFactorSecret,
encoding: 'base32',
token: token
});
if (verified) {
req.session.user = user; // Sesión segura con 2FA
res.status(200).json({ message: 'Logged in with 2FA' });
} else {
res.status(401).json({ message: 'Invalid 2FA token' });
}
} else {
res.status(401).json({ message: 'Unauthorized' });
}
}
Añadir autenticación de dos factores es sencillo con speakeasy. Primero, autenticas al usuario con su nombre y contraseña. Luego, verificas un token temporal generado desde su aplicación autenticadora. Solo inicias sesión si ambos pasos pasan. Esto añade una capa sólida de seguridad.
La autenticación de dos factores no es solo un “extra”, se está convirtiendo en la norma en la protección de cuentas en la web.