Masquerade
Permite a usuarios privilegiados cambiar temporalmente a otra cuenta de usuario mientras se mantiene un registro de la cuenta original para facilitar el regreso.
masquerade
Install
composer require 'drupal/masquerade:8.x-2.0'
Overview
El módulo Masquerade proporciona una forma segura e intuitiva para que los administradores y usuarios privilegiados asuman temporalmente la identidad de otra cuenta de usuario. Esto es particularmente útil para depuración, pruebas de funcionalidad específica del usuario o para proporcionar soporte a los usuarios experimentando el sitio desde su perspectiva.
El módulo rastrea la cuenta de usuario original en la sesión, permitiendo a los usuarios volver fácilmente a su propia cuenta en cualquier momento. Masquerade se integra perfectamente con la interfaz de usuario incorporada de Drupal, incluyendo el módulo Toolbar y los enlaces contextuales, proporcionando una experiencia de usuario sin fricciones.
La seguridad es un principio de diseño central de Masquerade. El mecanismo de control de acceso incorporado previene la escalada de privilegios por defecto - los usuarios solo pueden hacerse pasar por usuarios con permisos iguales o menores que los suyos. El UID 1 (superadministrador) puede hacerse pasar por cualquiera, pero nadie puede hacerse pasar por el UID 1 sin permiso explícito.
Features
- Cambiar temporalmente a otra cuenta de usuario preservando la sesión original para un fácil retorno
- Formulario de bloque con autocompletado habilitado para cambio rápido de usuario por nombre de usuario
- Integración con Toolbar mostrando enlace 'Dejar de suplantar' cuando se está suplantando
- Operación de entidad 'Suplantar como' en la página de listado administrativo de usuarios
- Permisos basados en roles permitiendo control granular sobre quién puede suplantar qué roles
- Seguridad incorporada que previene la escalada de privilegios por defecto
- Control de acceso personalizado vía hook_masquerade_access para control detallado
- Seguimiento de suplantación basado en sesión con contexto de caché dedicado
- Configuración opcional para controlar si la suplantación actualiza la hora de último acceso del usuario objetivo
- Campo extra en la visualización de usuario para mostrar enlace de suplantación
- Soporte de migración mapeando permisos de D7 a equivalentes de D8/D9
Use Cases
Soporte al cliente y depuración
El personal de soporte puede suplantar a un cliente para ver exactamente lo que ellos ven, diagnosticar problemas de permisos o reproducir errores reportados sin necesitar la contraseña del cliente. Después de resolver el problema, pueden inmediatamente volver a su propia cuenta.
Revisión de contenido por editores
Los editores pueden suplantar a autores de contenido para verificar que el contenido enviado aparece correctamente desde la perspectiva del autor, verificando la visibilidad apropiada de campos, restricciones de acceso y estados de flujo de trabajo.
Capacitación y documentación
Los administradores que crean materiales de capacitación pueden suplantar usuarios con diferentes roles para capturar capturas de pantalla precisas mostrando exactamente lo que cada rol ve, asegurando que la documentación refleje la experiencia real del usuario.
Pruebas de acceso basado en roles
Durante el desarrollo o configuración del sitio, los desarrolladores pueden suplantar usuarios con roles específicos para probar que los permisos y restricciones de acceso funcionan correctamente sin crear múltiples cuentas de prueba.
Asistencia en incorporación de usuarios
Los administradores pueden suplantar usuarios recién creados para completar la configuración inicial del perfil, configurar preferencias o realizar otras tareas de incorporación en nombre de usuarios que puedan necesitar asistencia.
Tips
- El UID 1 (superadministrador) siempre puede suplantar a cualquier usuario sin permisos adicionales, pero otorgar explícitamente el permiso 'Suplantar como superusuario' es requerido para que otros puedan suplantar al UID 1
- El módulo usa seguimiento basado en sesión, por lo que la suplantación sobrevive a la navegación de páginas pero termina cuando la sesión expira o el navegador se cierra
- Use el bloque Masquerade para acceso rápido al formulario de suplantación, o use la operación 'Suplantar como' del listado de usuarios para suplantación directa
- La suplantación dispara tanto hook_user_logout (para el usuario original) como hook_user_login (para el usuario objetivo), permitiendo que otros módulos respondan al cambio
- El control de acceso personalizado puede implementarse vía hook_masquerade_access para escenarios como permitir suplantación como usuario 'demo' sin requerir permisos amplios
Technical Details
Admin Pages 3
/masquerade
Una página que contiene el formulario de suplantación que permite a los usuarios cambiar a otra cuenta de usuario ingresando un nombre de usuario. Esta página es accesible para cualquier usuario que tenga al menos un permiso de suplantación.
/user/{user}/masquerade
URL de acción directa para suplantar a un usuario específico. Esta ruta típicamente se accede vía la operación 'Suplantar como' en el listado de usuarios o desde el enlace de suplantación en perfiles de usuario.
/unmasquerade
Cambia al usuario de vuelta a su cuenta original. Solo accesible cuando el usuario está actualmente suplantando.
Permissions 3
Hooks 1
hook_masquerade_access
Controla el acceso para suplantar a un usuario objetivo específico. Este hook permite a los módulos implementar lógica de acceso personalizada más allá de las verificaciones basadas en permisos por defecto.
Troubleshooting 5
Verifique que tiene los permisos apropiados. Necesita el permiso 'Suplantar como cualquier usuario', o permisos 'Suplantar como [rol]' para TODOS los roles que tiene el usuario objetivo. El UID 1 requiere el permiso especial 'Suplantar como superusuario'.
La operación solo aparece para usuarios que tiene permiso de suplantar. Si el usuario objetivo tiene permisos que usted no tiene, el enlace no aparecerá debido a la protección incorporada contra escalada de privilegios.
Debe volver a su cuenta original antes de suplantar a un usuario diferente. Use el enlace 'Dejar de suplantar' en la barra de herramientas o menú de usuario.
Este comportamiento puede controlarse vía la configuración 'update_user_last_access' en masquerade.settings.yml. Establézcalo en FALSE para prevenir actualizaciones mientras se suplanta.
Asegúrese de que el bloque está colocado en una región visible, y que tiene al menos un permiso de suplantación. El bloque está oculto para usuarios anónimos y para usuarios que actualmente están suplantando (a menos que 'Mostrar enlace para dejar de suplantar' esté habilitado).
Security Notes 7
- El control de acceso por defecto de Masquerade previene la escalada de privilegios - los usuarios no pueden suplantar a alguien con más permisos que ellos mismos
- El UID 1 recibe protección especial: solo usuarios con el permiso explícito 'Suplantar como superusuario' pueden suplantar al superadministrador
- Los permisos 'Suplantar como cualquier usuario' y 'Suplantar como superusuario' solo deben otorgarse a roles administrativos altamente confiables
- Todos los eventos de suplantación se registran incluyendo quién suplantó a quién y cuándo volvieron
- La protección de token CSRF se aplica en las rutas de suplantar y dejar de suplantar
- La regeneración de sesión ocurre durante el cambio para prevenir ataques de fijación de sesión
- La suplantación de usuarios anónimos intencionalmente no está soportada - use navegación privada en su lugar