POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Guía paso a paso para SSO con múltiples proveedores en NestJS con OAuth2

## Autenticación JWT con múltiples proveedores OAuth2 en NestJS

Publicado el 10/09/2025

Introducción En aplicaciones modernas los usuarios esperan poder iniciar sesión con Google, GitHub, Microsoft o con credenciales tradicionales sin problemas. Partiendo de un sistema básico de autenticación JWT en NestJS con estrategias de Passport, guards y login por correo y contraseña, este artículo explica cómo ampliar la arquitectura para soportar múltiples proveedores OAuth2 manteniendo compatibilidad con la autenticación clásica.

Quiénes somos En Q2BSTUDIO somos especialistas en desarrollo de software a medida y aplicaciones a medida, con experiencia en inteligencia artificial, ciberseguridad y servicios cloud AWS y Azure. Si necesitas una solución de desarrollo adaptada a tus necesidades visita desarrollo de aplicaciones y software a medida y para proyectos de inteligencia artificial descubre nuestros servicios en inteligencia artificial para empresas.

Qué construiremos Resumidamente añadiremos Un patrón de proveedor extensible para OAuth2 Enlace automático de cuentas cuando coincida el email Soporte para usuarios solo OAuth junto a usuarios tradicionales Ejemplos de integración con Google, GitHub y Microsoft

Dependencias clave y versiones recomendadas passport 0.7.0 passport-local ^1.0.0 passport-jwt 4.0.1 @nestjs/passport 10.0.3 @nestjs/jwt 10.2.0 bcrypt 5.1.1 passport-google-oauth20 y sus tipos de desarrollo Cada proyecto podrá ajustar versiones, pero estas ofrecen compatibilidad y estabilidad para la arquitectura descrita.

Modelo de datos y migración a Prisma Para gestionar múltiples proveedores de forma limpia migré de TypeORM a Prisma. Prisma facilita un diseño schema first y un cliente autogenerado que reduce boilerplate y simplifica relaciones. Cambios principales en el modelo Usuario password pasa a ser nullable para soportar cuentas solo OAuth isOAuthUser flag para distinguir registros tradicionales de social OAuthAccount entidad relacionada uno a muchos con User campos provider para el nombre del servicio y providerId para el identificador único del proveedor Este diseño permite registro tradicional, registro solo OAuth y enlace de cuentas múltiples por usuario.

Diseño de la arquitectura OAuth2 La clave es crear una arquitectura unificada que haga trivial añadir nuevos proveedores. Componentes principales Módulo OAuth Provider Interface con tres métodos authorize callback getProviderName Servicio OAuth que coordina login, registro y enlace de cuentas Factory de proveedores para registrar y obtener proveedores dinámicamente Controlador agnóstico de proveedor que expone dos rutas universales

Interfaz de proveedor Cada proveedor implementa tres métodos authorize genera la URL de autorización callback gestiona el intercambio del código por token y obtiene la información del usuario getProviderName devuelve el identificador usado en la base de datos Este contrato permite normalizar el flujo OAuth2 entre Google, GitHub, Microsoft o cualquier otro proveedor futuro.

Servicio OAuth responsabilidades Obtener la URL de autorización del proveedor Manejar el callback OAuth: intercambiar código por token, obtener información estandarizada del usuario y ejecutar el flujo de login Registro automático de nuevos usuarios si no existen Enlace automático de cuentas cuando el email coincide Conserva compatibilidad con usuarios que ya usan email y contraseña

Factory de proveedores Patrón factory para registrar y recuperar proveedores por su nombre Registrar un nuevo proveedor implica implementar la interfaz y registrarlo en la factory Beneficios Añadir un proveedor nuevo es trivial No hay código repetido Control centralizado de proveedores

Controlador agnóstico Endpoints universales GET /auth/:provider devuelve la URL de autorización GET /auth/:provider/callback procesa el callback y retorna el token JWT El controlador no contiene lógica específica de cada proveedor, lo que facilita el mantenimiento y la escalabilidad.

Ejemplo práctico Google OAuth2 Resumen de pasos Crear la aplicación en Google Cloud Console y añadir como redirect URI la ruta /auth/google/callback Añadir variables de entorno típicas GOOGLE_CLIENT_ID GOOGLE_CLIENT_SECRET GOOGLE_CALLBACK_URL GOOGLE_AUTH_URL GOOGLE_TOKEN_URL GOOGLE_USER_INFO_URL GOOGLE_SCOPE Implementación del proveedor Implementar authorize que construya la URL con client_id redirect_uri scope response_type etc Implementar callback que intercambie el code por access token y llame al endpoint de user info para mapear id email nombre y foto Registrar el proveedor en la OAuthProviderFactory e incluirlo en los providers del OAuthModule

Registro en la factory En el constructor de la factory inyectar el proveedor Google y ejecutar registerProvider google con la instancia Esto hace que automáticamente existan las rutas /auth/google y /auth/google/callback sin tocar controladores ni servicios centrales.

Prácticas recomendadas Seguridad Validar y sanitizar los datos recibidos Evitar exponer secretos en el cliente Rotación de tokens y manejo de refresh tokens Enlace de cuentas Evitar duplicados utilizando el email como criterio primario cuando sea seguro hacerlo Notificar al usuario cuando se cree o vincule una cuenta para transparencia

Pruebas y despliegue Probar flujos completos en entornos locales y staging Probar casos límite como usuario con mismo email en varios proveedores y usuarios con email no verificado Monitoreo y logging para detectar errores en callbacks y fallos de intercambio de tokens

Qué sigue y extensibilidad La arquitectura permite añadir cualquier proveedor nuevo implementando la interfaz OAuthProviderInterface y registrándolo en la factory No son necesarios cambios en controladores, servicios ni esquema de base de datos para la mayoría de proveedores

Beneficios para tu negocio Al ofrecer SSO con múltiples proveedores mejoras la experiencia de usuario y disminuyes la fricción en el acceso. En Q2BSTUDIO combinamos esta arquitectura con soluciones de ciberseguridad, servicios cloud aws y azure, servicios de inteligencia de negocio y proyectos de agentes IA y power bi para entregar soluciones completas y seguras adaptadas a su negocio.

Palabras clave aplicaciones a medida software a medida inteligencia artificial ciberseguridad servicios cloud aws y azure servicios inteligencia de negocio ia para empresas agentes IA power bi

Contacto Si quieres que implementemos una solución de autenticación SSO multicloud, escalable y segura ponte en contacto con nuestro equipo especializado en desarrollo a medida e inteligencia artificial y descubre cómo podemos integrarlo con tus servicios cloud y procesos de negocio.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio