OAuth Client & OpenID Connect SSO | Inicio de sesión OAuth/OIDC

Habilita la autenticación de inicio de sesión único (SSO) para Drupal utilizando proveedores de identidad compatibles con OAuth 2.0 y OpenID Connect, como Microsoft Entra ID (Azure AD), Google, Keycloak, Okta y muchos más.

miniorange_oauth_client
891 sites
31
drupal.org

Install

Drupal 11, 10 v5.0.1
composer require 'drupal/miniorange_oauth_client:^5.0'
Drupal 9 v4.0.23
composer require 'drupal/miniorange_oauth_client:^4.0'

Overview

El módulo miniOrange OAuth/OIDC Client transforma su sitio Drupal en un cliente OAuth 2.0 / OpenID Connect, permitiendo un inicio de sesión único (SSO) sin interrupciones con proveedores de identidad externos. Los usuarios pueden autenticarse utilizando sus credenciales existentes de proveedores como Microsoft Entra ID (Azure AD), Azure B2C, AWS Cognito, Google, Discord, Keycloak, Okta, Salesforce y muchos otros servidores compatibles con OAuth/OpenID.

El módulo implementa el flujo de Authorization Code Grant de OAuth 2.0, intercambiando códigos de autorización por tokens de acceso y recuperando información del usuario desde el endpoint userinfo del proveedor de identidad. Soporta mapeo de atributos para sincronizar datos de usuario entre el proveedor OAuth y los perfiles de usuario de Drupal.

La versión gratuita permite configurar un proveedor OAuth e iniciar sesión con usuarios Drupal existentes. Las versiones Premium y Enterprise añaden funcionalidades como creación automática de usuarios, múltiples proveedores OAuth, mapeo avanzado de roles, soporte para OpenID Connect, restricciones de dominio, restricciones de página y analíticas de inicio de sesión.

Features

  • Autenticación de inicio de sesión único con OAuth 2.0 y OpenID Connect (OIDC)
  • Plantillas preconfiguradas para más de 20 proveedores OAuth populares (Azure AD, Google, GitHub, Keycloak, Okta, etc.)
  • Flujo de Authorization Code Grant con protección CSRF mediante parámetro state
  • Endpoints OAuth configurables (Authorization, Token, UserInfo)
  • Mapeo básico de atributos para email y nombre de usuario desde el servidor OAuth
  • Función de prueba de configuración para verificar la configuración OAuth y ver los atributos recibidos
  • Enlace de inicio de sesión añadido automáticamente al formulario de login de Drupal cuando OAuth está habilitado
  • Transmisión flexible de credenciales del cliente (mediante encabezado HTTP o cuerpo de la solicitud)
  • Opción de aplicar URL de callback HTTPS para proveedores que requieren callbacks seguros
  • Exportación de configuración a archivo JSON para respaldo y migración
  • Registro de depuración con archivos de log descargables para resolución de problemas
  • Cifrado de client secret usando AES-256-CBC para almacenamiento seguro
  • Texto personalizable del enlace de inicio de sesión con soporte para marcador de posición dinámico del nombre de la aplicación

Use Cases

Inicio de sesión único corporativo con Microsoft Entra ID (Azure AD)

Las organizaciones que utilizan Microsoft 365 o Azure pueden permitir a los empleados iniciar sesión en su intranet de Drupal o sitio web público usando sus credenciales corporativas de Microsoft existentes. Los usuarios hacen clic en el enlace SSO en la página de inicio de sesión de Drupal y son redirigidos a la página de inicio de sesión de Microsoft. Después de la autenticación, inician sesión automáticamente en Drupal con su cuenta de usuario emparejada por dirección de correo electrónico.

Inicio de sesión social con Google

Permite a los visitantes del sitio web registrarse e iniciar sesión usando sus cuentas de Google. Esto simplifica el proceso de registro y mejora las tasas de conversión al eliminar la necesidad de crear y recordar nuevas credenciales. El módulo obtiene el correo electrónico del usuario desde Google para emparejar o crear su cuenta de Drupal.

Autenticación centralizada con Keycloak

Las organizaciones que ejecutan Keycloak como su solución de gestión de identidad pueden integrar Drupal como aplicación cliente. Esto permite el inicio de sesión único en todas las aplicaciones de la empresa, gestión centralizada de usuarios y políticas de control de acceso consistentes. Keycloak maneja la autenticación mientras Drupal confía en los tokens que recibe.

Portal de clientes con Okta

Las empresas SaaS que utilizan Okta para la gestión de identidad de clientes pueden permitir a sus clientes acceder a una base de conocimientos o portal de soporte basado en Drupal usando sus credenciales de Okta existentes. Esto proporciona una experiencia fluida y mantiene los controles de seguridad definidos en Okta.

Comunidad de desarrolladores con GitHub

Los proyectos de código abierto o comunidades de desarrolladores pueden permitir a los colaboradores iniciar sesión usando sus cuentas de GitHub. Esto es particularmente relevante para sitios de documentación basados en Drupal o portales de desarrolladores donde la mayoría de los usuarios ya tienen cuentas de GitHub.

Comunidad de videojuegos con Discord

Las comunidades de videojuegos que usan Discord para comunicación pueden integrar la autenticación de Discord con su sitio comunitario de Drupal. Los miembros usan sus credenciales de Discord para acceder a foros, galerías y contenido exclusivo para miembros.

Portal empresarial B2B con Salesforce

Las empresas que utilizan Salesforce para CRM pueden permitir a socios y clientes iniciar sesión en un portal de socios de Drupal usando sus credenciales de Salesforce Community. Esto mantiene una identidad unificada a través de los sistemas empresariales y simplifica la gestión de acceso.

Tips

  • Siempre ejecute 'Perform Test Configuration' después de cambiar la configuración OAuth para verificar que la conexión funcione correctamente
  • Use la función de registro de depuración al solucionar problemas habilitándola en Sign In Settings - los registros aparecen en Reports > Recent log messages
  • Exporte su configuración después de la configuración inicial usando la función Backup para restaurar o migrar configuraciones fácilmente
  • La URL de callback mostrada en el módulo debe registrarse exactamente como se muestra en la configuración de la aplicación de su proveedor OAuth
  • Para Azure AD, use el Application (client) ID como Client ID y cree un client secret en Certificates & secrets
  • Al usar Google OAuth, habilite la Google+ API y configure la pantalla de consentimiento OAuth en Google Cloud Console
  • Borre la caché de Drupal después de realizar cambios de configuración si el enlace de inicio de sesión no aparece inmediatamente
  • El módulo agrega enlaces de inicio de sesión al formulario de inicio de sesión estándar de Drupal automáticamente - no se requieren cambios de tema
  • Para ubicación personalizada del enlace de inicio de sesión, cree un Block con una etiqueta anchor apuntando a /moLogin
  • Los client secrets están encriptados en la base de datos - si está migrando, use la función de exportar/importar en lugar de copiar valores de la base de datos

Technical Details

Admin Pages 8
Configurar OAuth /admin/config/people/miniorange_oauth_client/config_clc

Página de configuración principal para establecer los ajustes del proveedor OAuth/OpenID Connect. Configure los endpoints de su proveedor de identidad, credenciales de cliente y comportamiento de inicio de sesión.

Mapeo de Atributos y Roles /admin/config/people/miniorange_oauth_client/mapping

Configure cómo los atributos del servidor OAuth se mapean a los campos de usuario de Drupal. Mapee email, nombre de usuario y atributos personalizados.

Configuración de Inicio de Sesión /admin/config/people/miniorange_oauth_client/Settings

Configure depuración, creación automática de usuarios, restricciones de página, restricciones de dominio y URLs de redirección personalizadas.

Informes de Inicio de Sesión /admin/config/people/miniorange_oauth_client/LoginReports

Ver análisis de inicio de sesión SSO e historial de autenticación de usuarios (solo función Enterprise).

Planes de Actualización /admin/config/people/miniorange_oauth_client/licensing

Ver comparación de características entre los planes Free, Standard, Premium y Enterprise con precios y opciones de actualización.

Respaldo/Importar Configuraciones del Módulo /admin/config/people/miniorange_oauth_client/backup

Exportar la configuración OAuth actual a un archivo JSON o importar configuración desde un archivo previamente exportado.

Solicitar Prueba de Todas las Funciones /admin/config/people/miniorange_oauth_client/requestDemo

Solicitar una prueba de 7 días de las funciones de la versión premium/enterprise.

Soporte al Cliente /admin/config/people/miniorange_oauth_client/CustomerSupportClient

Contactar al soporte de miniOrange para ayuda técnica, programación de demostraciones o consultas de ventas.

Permissions 1
Administrar la configuración del sitio

Permiso de Drupal core requerido para acceder a todas las páginas de configuración del OAuth Client

Hooks 2
hook_help

Proporciona texto de ayuda para el módulo en la página de ayuda en admin/help/miniorange_oauth_client

hook_form_user_login_form_alter

Modifica el formulario de inicio de sesión de usuario de Drupal para agregar un enlace de inicio de sesión OAuth SSO cuando OAuth está configurado y habilitado

Troubleshooting 8
El enlace de inicio de sesión OAuth no aparece en la página de inicio de sesión

Asegúrese de que 'Enable Login with OAuth' esté marcado en la pestaña Configure OAuth. También verifique que un proveedor OAuth esté completamente configurado con todos los endpoints requeridos y credenciales de cliente.

Error: Invalid state parameter / State mismatch

Este error de protección CSRF indica que el parámetro state no coincide. Borre las cookies del navegador, asegúrese de que el manejo de sesiones funcione correctamente y verifique que la URL de callback coincida exactamente con la configurada en su proveedor OAuth.

Error: Email address does not received

El atributo de correo electrónico no está mapeado correctamente. Ejecute Test Configuration nuevamente y seleccione el atributo correcto que contiene la dirección de correo electrónico del menú desplegable en la ventana de resultados de la prueba.

Error: User Not Found in Drupal

En la versión gratuita, los usuarios ya deben existir en Drupal con una dirección de correo electrónico coincidente. Cree primero la cuenta de usuario o actualice a Standard/Premium/Enterprise para la creación automática de usuarios.

Error: Invalid response received while fetching access token

Verifique que la URL del Token Endpoint sea correcta. Confirme que el Client ID y Client Secret coincidan con su proveedor OAuth. Intente cambiar la configuración 'Send Client ID and secret in' entre Header y Body.

Error: cURL is not enabled on your site

La extensión PHP cURL debe estar instalada y habilitada. Contacte a su proveedor de hosting o administrador del servidor para habilitar php-curl.

El proveedor OAuth requiere callback HTTPS pero el sitio usa HTTP

Habilite la casilla 'Enforce HTTPS Callback URL' en la pestaña Configure OAuth. Esto generará una URL de callback HTTPS incluso si se accede a su sitio vía HTTP.

La ventana emergente de Test Configuration se cierra pero la configuración no se guarda

Asegúrese de hacer clic en el botón 'Done' en la ventana emergente de configuración de prueba después de seleccionar el atributo de correo electrónico. Si la ventana emergente se cierra inesperadamente, verifique los bloqueadores de ventanas emergentes del navegador.

Security Notes 8
  • Los client secrets se encriptan usando AES-256-CBC con la clave privada del sitio antes de almacenarse en la base de datos
  • El parámetro state de OAuth se usa para prevenir ataques CSRF - se genera con datos aleatorios y se valida en el callback
  • La comparación de state basada en sesión asegura que el callback se origine del mismo usuario que inició el inicio de sesión
  • La aplicación de URL de callback HTTPS está disponible para proveedores OAuth que requieren conexiones seguras
  • Las direcciones de correo electrónico se validan usando filter_var() con FILTER_VALIDATE_EMAIL antes de la búsqueda de usuarios
  • Toda la salida de usuario se escapa usando Html::escape() para prevenir ataques XSS
  • El módulo usa el cliente HTTP de Drupal en lugar de cURL directo para una mejor integración de seguridad
  • El caché de página está deshabilitado en el formulario de inicio de sesión para asegurar que siempre se muestren enlaces SSO actualizados