SAML SSO - Proveedor de Servicios
Habilita el inicio de sesión único (SSO) SAML 2.0 para sitios Drupal permitiendo a los usuarios autenticarse a través de proveedores de identidad SAML 2.0 externos como Azure AD, Okta, ADFS, Google Apps y otros.
miniorange_saml
Instalar
composer require 'drupal/miniorange_saml:^3.1'
Overview
El módulo miniOrange SAML Service Provider permite que su sitio Drupal actúe como un Proveedor de Servicios (SP) SAML 2.0, permitiendo a los usuarios autenticarse a través de Proveedores de Identidad (IdP) externos compatibles con SAML 2.0. Esto proporciona funcionalidad segura de inicio de sesión único (SSO) sin requerir que los usuarios mantengan credenciales separadas para su sitio Drupal.
El módulo admite una amplia gama de Proveedores de Identidad incluyendo Microsoft Azure AD, ADFS, Okta, Salesforce, Google Apps (Google Workspace), Shibboleth, SimpleSAMLphp, OpenAM, Centrify, PingOne, PingFederate, RSA, IBM, Oracle, OneLogin, Bitium, Auth0 y muchos otros. Proporciona opciones de configuración completas para establecer la relación de confianza entre su sitio Drupal y el IdP.
Las características clave de SAML 2.0 incluyen intercambio de metadatos (tanto por carga de archivos como por URL), gestión de certificados X.509, configuración del formato NameID y manejo del endpoint ACS (Assertion Consumer Service). El módulo crea automáticamente cuentas de usuario para nuevos usuarios SSO y puede mapear atributos del IdP a campos de usuario de Drupal.
Features
- Implementación de Proveedor de Servicios compatible con SAML 2.0 para Drupal
- Soporte para múltiples Proveedores de Identidad incluyendo Azure AD, Okta, ADFS, Google Apps, Salesforce, Shibboleth y más
- Configuración automática de metadatos del IdP mediante URL o carga de archivo XML
- Generación y descarga de metadatos del SP en formato XML
- Función de prueba de configuración para validar la configuración SSO antes de ponerla en producción
- Visualización de solicitudes y respuestas SAML para propósitos de depuración
- Creación automática de usuarios para usuarios SSO que inician sesión por primera vez
- Mapeo de roles para asignar roles de Drupal predeterminados a usuarios SSO (básico en la versión gratuita)
- Integración del enlace de inicio de sesión en el formulario de inicio de sesión estándar de Drupal y formularios personalizados
- Gestión de certificados X.509 con soporte de codificación de caracteres
- Entity ID del SP y URL base personalizables
- Solicitud de prueba gratuita de 7 días para características premium directamente desde la interfaz de administración
Use Cases
Inicio de sesión único empresarial con Azure AD
Las organizaciones que utilizan Microsoft 365 pueden permitir que sus empleados inicien sesión en el sitio Drupal usando sus credenciales existentes de Microsoft. El módulo actúa como un Service Provider conectándose a Azure AD (Entra ID) como Identity Provider. Los usuarios hacen clic en 'Login using Azure AD' en la página de inicio de sesión de Drupal y son redirigidos a Microsoft para autenticación. Después de un inicio de sesión exitoso, inician sesión automáticamente en Drupal con su cuenta de usuario creada o actualizada basándose en los atributos SAML.
SSO para instituciones educativas con Shibboleth
Las universidades e instituciones de investigación frecuentemente utilizan Shibboleth para la gestión de identidad federada. Este módulo permite que el sitio Drupal participe en la infraestructura SSO de la institución, permitiendo a estudiantes y profesores acceder al sitio usando sus credenciales institucionales sin crear cuentas separadas.
Aplicación SaaS multi-tenant con múltiples IdPs
Una plataforma SaaS basada en Drupal que sirve a múltiples clientes empresariales puede usar la versión premium para configurar diferentes Identity Providers para cada cliente. El enrutamiento SSO basado en dominio dirige a los usuarios al IdP de su organización según su dominio de correo electrónico o el subdominio al que acceden.
Portal de intranet con autenticación obligatoria
Los portales internos de la empresa pueden habilitar la autenticación obligatoria para requerir que todos los usuarios inicien sesión a través del IdP corporativo. El acceso anónimo se bloquea y los usuarios son redirigidos automáticamente al IdP cuando acceden a cualquier página. Esto asegura que solo los empleados autenticados puedan acceder a los recursos de la empresa.
Portal de clientes con aprovisionamiento Just-In-Time
Los portales orientados al cliente pueden permitir que los clientes inicien sesión usando sus propios Identity Providers (como Okta o OneLogin configurados por el departamento de TI del cliente). El módulo crea automáticamente cuentas de usuario de Drupal en el primer inicio de sesión, asignando roles apropiados basándose en los atributos SAML del IdP.
Prueba de configuración SSO
Antes de habilitar SSO para todos los usuarios, los administradores pueden usar la función Test Configuration para verificar que la integración funciona correctamente. Esto abre una ventana emergente que realiza el flujo SSO completo y muestra la respuesta SAML, incluyendo todos los atributos recibidos del IdP. Los botones SAML Request y SAML Response ayudan a solucionar problemas de configuración.
Tips
- Siempre use el botón Test Configuration para verificar su configuración SSO antes de habilitarla para todos los usuarios
- Descargue el archivo XML de metadatos SP desde la pestaña Service Provider Metadata e impórtelo en su IdP para una configuración más fácil
- Habilite Character Encoding si experimenta problemas de validación de certificados, especialmente con certificados de IdPs no estándar
- Use los botones SAML Request y SAML Response para depuración detallada - estos muestran el XML exacto que se envía y recibe
- Configure un SP Entity ID personalizado si planea usar el mismo IdP con múltiples sitios Drupal para asegurar una identificación única
- Mantenga una copia de seguridad del certificado X.509 de su IdP y monitoree la rotación de certificados para evitar interrupciones del servicio
- Para entornos de producción, solicite una prueba de las funciones premium para evaluar funcionalidades avanzadas como mapeo de atributos y aprovisionamiento de roles
- La URL /samllogin puede usarse directamente en menús de navegación o como botón de inicio de sesión para una experiencia de usuario más limpia
Technical Details
Admin Pages 8
/admin/config/people/miniorange_saml/idp_setup
Muestra los metadatos del Proveedor de Servicios que deben configurarse en su Proveedor de Identidad. Esta página muestra todos los valores necesarios para establecer la relación de confianza desde el lado del IdP, incluyendo el ID de Entidad del SP, la URL ACS, el URI de Audiencia y los metadatos XML descargables.
/admin/config/people/miniorange_saml/sp_setup
Configure los ajustes de su Proveedor de Identidad. Aquí es donde ingresa los metadatos del IdP incluyendo ID de Entidad, URL de Inicio de Sesión y certificado X.509. Soporta tanto configuración manual como importación automática de metadatos.
/admin/config/people/miniorange_saml/user_provisioning
Configure las capacidades automatizadas de aprovisionamiento y sincronización de usuarios. Esta pestaña promueve el plan de paquete de Aprovisionamiento de Usuarios que habilita la sincronización de usuarios basada en SCIM o API con varios Proveedores de Identidad.
/admin/config/people/miniorange_saml/Mapping
Configure cómo los atributos SAML del Proveedor de Identidad se mapean a los campos de usuario y roles de Drupal. Esto incluye mapeo básico de roles (gratuito) y mapeo avanzado de atributos/roles personalizados (premium).
/admin/config/people/miniorange_saml/signon_settings
Configure el comportamiento de inicio de sesión incluyendo método de búsqueda de usuarios, URLs de redirección, configuración de auto-creación, autenticación forzada y restricciones basadas en dominio. La mayoría de las funciones son premium.
/admin/config/people/miniorange_saml/AdvanceSettings
Importar y exportar configuración del módulo, y ver información promocional sobre módulos relacionados de miniOrange como Aprovisionamiento de Usuarios (SCIM).
/admin/config/people/miniorange_saml/Licensing
Ver planes de licencia disponibles y funciones premium. Compare los planes Estándar, Premium y Enterprise con sus respectivas características y precios.
/admin/config/people/miniorange_saml/MiniorageSupport
Envíe consultas de soporte, solicitudes de funciones o solicitudes de demostración al equipo de soporte de miniOrange.
Permisos 1
Hooks 3
hook_form_alter
Añade un enlace de inicio de sesión SAML SSO al formulario de inicio de sesión estándar de Drupal (user_login_form), al bloque de inicio de sesión (user_login_block) y a cualquier formulario personalizado configurado en los ajustes del módulo.
hook_help
Proporciona documentación de ayuda para el módulo accesible en admin/help/miniorange_saml, incluyendo pasos de configuración, enlaces a guías de instalación y enlaces a preguntas frecuentes.
hook_theme
Registra tres plantillas Twig utilizadas por el módulo: mo-saml-request-trial para formularios de solicitud de prueba, mo-saml-licensing-new para la página de licencias y mo-saml-send-ticket-info para la confirmación de tickets de soporte.
Troubleshooting 7
El Audience URI configurado en su Identity Provider no coincide con el SP Entity ID. Verifique la pestaña Service Provider Metadata para obtener el valor correcto del Audience URI y actualice la configuración de su IdP. El Audience URI debe coincidir exactamente con el SP Entity ID.
El IdP Entity ID configurado en el módulo no coincide con lo que el IdP envía en la respuesta SAML. Use Test Configuration para ver el Entity ID esperado en el mensaje de error y actualice el campo 'IdP Entity ID or Issuer' en Service Provider Setup.
El certificado X.509 configurado en el módulo no coincide con el certificado usado por el IdP para firmar las respuestas. Obtenga el certificado actual de su IdP y actualice el campo X.509 Certificate. Si su IdP rota certificados, asegúrese de tener el más reciente.
Verifique que 'Enable login with SAML' esté marcado en Service Provider Setup y que la configuración del IdP esté completa (IdP Name, Entity ID y Login URL estén todos configurados). Limpie la caché de Drupal después de realizar cambios.
La cuenta de usuario en Drupal ha sido bloqueada. Vaya a People y desbloquee al usuario, o verifique si hay reglas de bloqueo automatizado que puedan estar afectando a nuevos usuarios SSO.
Configure su Identity Provider para liberar los atributos requeridos en la aserción SAML. Como mínimo, asegúrese de que se esté enviando el NameID o los atributos de correo electrónico/nombre de usuario configurados. Use la función Test Configuration para ver qué atributos se están recibiendo.
Asegúrese de que todos los campos requeridos estén completados: Identity Provider Name, IdP Entity ID or Issuer y SAML Login URL son obligatorios. El Login URL debe tener un formato de URL válido. Verifique que el certificado X.509 esté correctamente formateado con los marcadores BEGIN/END CERTIFICATE.
Security Notes 8
- El módulo verifica las firmas de respuesta SAML usando el certificado X.509 configurado para prevenir manipulaciones
- Las aserciones SAML tienen una ventana de validez basada en tiempo (2 minutos de tolerancia) para prevenir ataques de repetición
- La validación de URL de destino asegura que las respuestas SAML solo se acepten para el sitio Drupal correcto
- Las contraseñas de usuario se generan automáticamente para usuarios SSO y no se exponen - la autenticación es manejada por el IdP
- El certificado X.509 debe obtenerse de forma segura del administrador de su IdP, no de fuentes no confiables
- Considere habilitar HTTPS para su sitio Drupal para proteger las comunicaciones SAML en tránsito
- Las funciones premium incluyen opción de inicio de sesión de respaldo - úsela con precaución ya que proporciona una ruta de autenticación alternativa
- El módulo no almacena ni transmite credenciales de usuario - toda la autenticación ocurre en el Identity Provider