Integración de Github en Next.js con NextAuth
Clase 6 de 11 • Curso de Next.js: Autenticación
Resumen
¿Cómo configurar la autenticación con NextAuth y GitHub?
NextAuth se ha convertido en una herramienta esencial para configurar la autenticación en aplicaciones Next.js. Con su capacidad para integrarse de manera eficiente con múltiples servicios, ofrece una solución versátil para manejar flujos complejos de autorización. Este artículo te guiará en el proceso de integrar NextAuth con GitHub, permitiendo que los usuarios inicien sesión de manera sencilla y segura.
¿Cómo crear una aplicación en GitHub para autenticación?
Para comenzar, necesitas crear una aplicación en GitHub que jugará un papel crucial en el proceso de autenticación. Este es un paso esencial que se realiza dentro de las configuraciones de desarrollador de GitHub.
-
Accede a las configuraciones de desarrollador en GitHub:
- Dirígete a
github.com
, navega a la sección de 'Settings' (Configuraciones) y selecciona 'Developer settings' (Configuraciones de desarrollador).
- Dirígete a
-
Crea una nueva aplicación OAuth:
- Selecciona la opción para crear una nueva OAuth Application.
- Completa los campos requeridos como el nombre y la descripción. Estos pueden ser cualquier cosa que identifique tu aplicación.
-
Configura las URLs relevantes:
- Homepage URL: Debe coincidir con tu dominio de desarrollo. Usualmente es
localhost:3000
si trabajas en un entorno local. - Authorization callback URL: Configura esta URL como
http://localhost:3000/api/auth/callback
, que NextAuth utilizará para manejar el flujo de autenticación.
- Homepage URL: Debe coincidir con tu dominio de desarrollo. Usualmente es
-
Guarda tu aplicación y guarda los valores clave:
- Una vez creada, GitHub te proporcionará un
Client ID
y unClient Secret
. Estos valores serán vitales para integrar tu aplicación con NextAuth.
- Una vez creada, GitHub te proporcionará un
¿Cómo integrar NextAuth en tu aplicación Next.js?
Con la aplicación de GitHub configurada, el siguiente paso es integrar NextAuth en tu aplicación de Next.js para manejar la autenticación. Simplificadamente, este es el procedimiento que debes seguir:
-
Instala NextAuth en tu proyecto:
- Asegúrate de tener NextAuth incluido en tu proyecto Next.js, generalmente desde la instalación del módulo npm.
-
Configura los proveedores de NextAuth:
- Ve al archivo
pages/api/auth/[...nextauth].js
y agrega un nuevo proveedor para GitHub.
import NextAuth from 'next-auth'; import Providers from 'next-auth/providers'; export default NextAuth({ providers: [ Providers.GitHub({ clientId: process.env.GITHUB_ID, clientSecret: process.env.GITHUB_SECRET }) ] });
- Ve al archivo
-
Establece las variables de entorno:
- Crea variables de entorno en tu archivo
.env.local
para los valores deClient ID
yClient Secret
:
GITHUB_ID=tu_cliente_id GITHUB_SECRET=tu_secreto
- Asegúrate de reiniciar tu servidor de desarrollo tras configurar estas variables para que los nuevos valores sean reconocidos.
- Crea variables de entorno en tu archivo
¿Qué sucede durante el flujo de autenticación?
Cuando un usuario intenta iniciar sesión usando GitHub, se desata todo el flujo de OAuth. Aquí está lo que ocurre en cada paso:
-
Iniciar sesión:
- El usuario selecciona "Iniciar sesión con GitHub" en tu aplicación.
- Es redirigido a GitHub para la autorización, donde puede revisar los permisos que la aplicación solicita.
-
Autorización del usuario:
- Si el usuario aprueba, GitHub autentica y redirige al usuario de vuelta a tu aplicación usando la
Authorization callback URL
.
- Si el usuario aprueba, GitHub autentica y redirige al usuario de vuelta a tu aplicación usando la
-
Gestión de sesión en NextAuth:
- NextAuth gestiona la sesión y almacena los datos del usuario, permitiéndote personalizar y consultar información adicional si lo deseas.
¿Cómo añadir más proveedores?
NextAuth no se limita a GitHub; puedes expandir fácilmente el soporte de proveedores de autenticación:
- Proveedores disponibles: Aparte de GitHub, NextAuth ofrece integración con múltiples servicios como Twitter, Facebook, Google, entre otros.
- Proceso de integración: El proceso de añadir nuevos proveedores es similar al descrito para GitHub, sólo necesitas las credenciales específicas de cada servicio.
NextAuth simplifica la gestión de múltiples flujos de autenticación con una configuración mínima, permitiéndote centrarte en el desarrollo de características de tu aplicación. ¡Anímate a explorar y experimentar con diferentes proveedores para descubrir cuál se adapta mejor a tu proyecto! ¿Tienes algún proveedor en mente para integrar? Me encantaría conocer tu experiencia e ideas. ¡Continúa explorando y aprendiendo!