CAS
Proporciona autenticación de inicio de sesión único (SSO) mediante Central Authentication Service (CAS) para sitios web Drupal.
cas
Install
composer require 'drupal/cas:^2.3'
Overview
El módulo CAS implementa el protocolo Central Authentication Service (CAS), un protocolo de inicio de sesión único / cierre de sesión único para la web que permite a los usuarios acceder a múltiples aplicaciones proporcionando sus credenciales solo una vez a una aplicación central del servidor CAS.
Usar un servicio de inicio de sesión único como CAS es beneficioso porque proporciona comodidad (los usuarios no necesitan recordar credenciales para múltiples servicios web) y seguridad (el sitio web Drupal nunca ve la contraseña del usuario). Este módulo implementa las versiones 1, 2 y 3 del protocolo CAS.
Las capacidades principales incluyen registro automático de usuarios, inicio de sesión forzado en páginas específicas, autenticación gateway para inicio de sesión transparente cuando los usuarios ya tienen una sesión CAS activa, soporte de cierre de sesión único, funcionalidad de proxy CAS y amplia personalización a través de eventos a los que otros módulos pueden suscribirse.
Features
- Autenticación de inicio de sesión único (SSO) mediante versiones 1.0, 2.0 y 3.0 del protocolo CAS
- Registro automático de usuarios para primeros inicios de sesión CAS con estrategias configurables de asignación de correo electrónico
- Función de inicio de sesión forzado para requerir autenticación CAS en páginas o rutas específicas
- Inicio de sesión gateway (inicio de sesión automático) para usuarios con sesiones CAS activas existentes sin forzar autenticación
- Soporte de cierre de sesión único (SLO) para cerrar sesión de usuarios en Drupal cuando cierran sesión en el servidor CAS
- Soporte de proxy CAS para acceder a recursos protegidos por CAS desde otros servicios
- Prevención del inicio de sesión normal de Drupal para usuarios CAS (función de seguridad recomendada)
- Gestión restringida de contraseña y correo electrónico para usuarios CAS
- Asignación automática de roles durante el registro de usuarios
- Mensajes de error configurables con soporte de reemplazo de tokens
- Registro de depuración para solución de problemas de autenticación CAS
- Creación masiva de usuarios para pre-registrar usuarios CAS
- Gestión del nombre de usuario CAS en formularios de perfil de usuario para administradores
- Integración con el módulo 'r4032login' para flujo transparente de acceso denegado a inicio de sesión
- Arquitectura basada en eventos que permite a otros módulos engancharse en el proceso de autenticación
- Métodos de redirección gateway del lado del cliente y del servidor
- Soporte de migración de usuarios CAS de Drupal 7 a Drupal 10+
Use Cases
Inicio de sesión único empresarial
Implementar la autenticación CAS para una organización donde los usuarios se autentican una vez con sus credenciales corporativas y obtienen acceso al sitio Drupal junto con otras aplicaciones habilitadas para CAS. Habilitar 'Prevent normal login' y 'Restrict password management' para seguridad, y configurar el registro automático de usuarios para agilizar la incorporación.
Integración con portal universitario
Integrar un sitio Drupal con la infraestructura CAS existente de una universidad. Los estudiantes y el personal inician sesión usando sus credenciales universitarias. Usar el módulo CAS Attributes para asignar automáticamente roles basándose en atributos como departamento o estado de estudiante devueltos por el servidor CAS.
Intranet con autenticación transparente
Configurar el inicio de sesión gateway para un sitio de intranet donde los usuarios que ya están autenticados en el servidor CAS de la organización inician sesión automáticamente en Drupal sin ninguna acción adicional. Esto proporciona una experiencia fluida para los usuarios internos.
Acceso a contenido restringido
Usar el inicio de sesión forzado en rutas de contenido específicas (como /admin o /private/*) para requerir autenticación CAS al acceder a áreas sensibles mientras se mantienen otras partes del sitio accesibles públicamente. Combinar con el módulo r4032login para autenticación automática en páginas de acceso denegado.
SSO multisitio con cierre de sesión único
Habilitar el cierre de sesión único (SLO) para que cuando los usuarios cierren sesión en el servidor CAS o cualquier otra aplicación habilitada para CAS, también cierren sesión automáticamente en el sitio Drupal, manteniendo un estado de sesión consistente en todas las aplicaciones.
Autenticación proxy para servicios web
Configurar la funcionalidad de proxy CAS para permitir que el sitio Drupal acceda a otros recursos protegidos por CAS (como servicios web o APIs) en nombre del usuario autenticado, usando tickets proxy obtenidos durante la autenticación inicial.
Cuentas de usuario aprovisionadas previamente
Usar la función de agregar usuarios CAS en masa para pre-registrar cuentas de usuario con roles específicos antes de que los usuarios se autentiquen por primera vez. Esto es útil para sistemas de inscripción a cursos o incorporación de empleados donde las cuentas necesitan existir antes del primer inicio de sesión.
Tips
- Siempre usar HTTPS para la comunicación con el servidor CAS en entornos de producción para proteger los tickets de autenticación
- Instalar el módulo Token para ver los tokens disponibles para personalizar mensajes de error con valores dinámicos como la URL de inicio de sesión CAS
- Usar el registro de depuración temporalmente durante la configuración inicial para diagnosticar problemas de configuración, pero deshabilitarlo en producción para mantener los registros limpios
- La ruta /caslogin (o la ruta heredada /cas) se puede enlazar desde cualquier lugar de su sitio para activar la autenticación CAS
- Agregar un parámetro de consulta 'destination' a la URL /caslogin para redirigir a los usuarios a una página específica después de la autenticación: /caslogin?destination=/node/123
- Considerar usar el módulo CAS Attributes si su servidor CAS devuelve atributos de usuario que deben mapearse a campos o roles de Drupal
- Para sitios de alto tráfico que usan inicio de sesión gateway, preferir el método de redirección del lado del cliente para mantener la compatibilidad con el caché de páginas
- Configurar una página de fallo de inicio de sesión para prevenir bucles de redirección cuando el inicio de sesión forzado está habilitado y la autenticación falla
Technical Details
Admin Pages 2
/admin/config/people/cas
Configura la conexión al servidor CAS, el comportamiento de autenticación, el manejo de cuentas de usuario, los mensajes de error y las opciones avanzadas para la autenticación de inicio de sesión único con CAS.
/admin/people/create/cas-bulk
Pre-registra uno o más usuarios CAS proporcionando sus nombres de usuario CAS, permitiéndoles iniciar sesión usando CAS antes de que se autentiquen por primera vez.
Permissions 2
Hooks 8
hook_cron
Limpia los tickets de concesión de proxy obsoletos (con más de 1 hora de antigüedad) y los datos de mapeo de sesión de cierre de sesión único expirados según el tiempo de vida configurado.
hook_user_role_delete
Elimina los roles borrados de la configuración de roles asignados automáticamente para prevenir errores de configuración.
hook_user_logout
Elimina los datos de sesión de la tabla cas_login_data cuando un usuario cierra sesión en Drupal.
hook_form_user_form_alter
Añade campos de nombre de usuario CAS al formulario de entidad de usuario, permitiendo a los administradores asociar nombres de usuario CAS con cuentas de Drupal.
hook_form_user_login_form_alter
Añade un enlace de inicio de sesión CAS al formulario de inicio de sesión estándar de Drupal cuando está configurado, e impide que los usuarios CAS utilicen el inicio de sesión normal.
hook_form_user_pass_alter
Añade validación al formulario de restablecimiento de contraseña para impedir que los usuarios CAS restablezcan su contraseña de Drupal cuando está restringido.
hook_validation_constraint_alter
Reemplaza el ProtectedUserFieldConstraint del núcleo con una versión decorada que omite la validación cuando la gestión de contraseñas restringida está habilitada para usuarios CAS.
hook_menu_links_discovered_alter
Añade el elemento de menú 'Añadir usuario(s) CAS' al menú de administración de Personas cuando el módulo Admin Toolbar Tools está habilitado.
Troubleshooting 7
Habilitar el registro de depuración en la configuración avanzada para ver mensajes de error detallados. Las causas comunes incluyen nombre de host/puerto del servidor CAS incorrectos, fallos en la verificación del certificado SSL o problemas de conectividad de red entre el servidor Drupal y el servidor CAS.
Si usa un certificado autofirmado o CA privada, agregue el certificado CA al almacén de confianza de su servidor web, o configure una ruta de certificado CA personalizada en la configuración de CAS. Nunca deshabilite la verificación SSL en producción.
Verificar que los roles estén seleccionados en la configuración 'Automatically assign roles on user registration'. Para la asignación de roles basada en atributos, instalar y configurar el módulo CAS Attributes.
Asegurar que el tiempo de revalidación del gateway no esté configurado en 'Every page request' cuando se usa el método de redirección del lado del cliente. También verificar que las rutas del gateway estén correctamente configuradas y no incluyan rutas relacionadas con CAS.
Verificar que su servidor CAS soporta SLO y está correctamente configurado para enviar solicitudes de cierre de sesión. Comprobar que la tabla cas_login_data se está poblando (los IDs de sesión se almacenan). Nota: SLO requiere almacenar IDs de sesión sin hash.
Habilitar 'Restrict password management' en la configuración de manejo de cuentas de usuario. Esto evita que los usuarios CAS usen la funcionalidad de contraseña olvidada.
Asegurar que la cuenta de usuario tenga una asociación de nombre de usuario CAS en la tabla authmap. Los administradores pueden configurar esto en el formulario de perfil de usuario habilitando 'Allow user to log in via CAS' y proporcionando el nombre de usuario CAS.
Security Notes 6
- El cierre de sesión único (SLO) almacena los IDs de sesión sin hash en la base de datos, lo cual es una desviación del endurecimiento de seguridad de sesiones predeterminado de Drupal. Solo habilitar SLO si es requerido por la política de autenticación de su organización.
- Nunca deshabilitar la verificación de certificados SSL en entornos de producción. Esto hace que el sitio sea vulnerable a ataques de intermediario (man-in-the-middle).
- La configuración 'Prevent normal login for CAS users' es altamente recomendada para asegurar que los usuarios CAS no puedan eludir la autenticación CAS incluso si conocen su contraseña de Drupal generada aleatoriamente.
- La funcionalidad de proxy solo debe habilitarse cuando sea necesaria, y las cadenas de proxy deben configurarse estrictamente para permitir solo servidores proxy de confianza.
- El registro de depuración nunca debe habilitarse en producción ya que puede registrar información de autenticación sensible en el watchdog de Drupal.
- Las contraseñas de Drupal de los usuarios CAS son cadenas aleatorias de 30 caracteres. Aunque teóricamente son vulnerables a fuerza bruta, prevenir el inicio de sesión normal elimina completamente este vector de ataque.