Tengo un requisito en el que tengo que reemplazar la autenticación de usuario predeterminada con la autenticación de un servidor central, es decir, un servidor SSO.
Al depurar Drupal, llegué a saber que toda la administración de la sesión ocurre en el includes/session.inc
archivo. Quiero hacer la autenticación como se muestra en la imagen:
ESCENARIO: Iniciar sesión
Los detalles de los pasos serían:
- Reemplace el formulario de inicio de sesión para enviar el nombre de usuario y la contraseña al servidor SSO ( no en Drupal , sino en .NET).
- Autentique al usuario en el servidor SSO usando la base de datos de ese sitio; y enviar una respuesta a alguna página PHP personalizada de mi sitio web (¿o un formulario de un módulo?).
- Utilizando la respuesta, identifique al usuario en la tabla de usuarios y cree una sesión para ese usuario sin verificar la contraseña (ya que significaría una doble autenticación). Por defecto, Drupal establece una cookie con nombre de
$insecure_session_name
variable y con valor$sid
. Quiero que Drupal no establezca la cookie aquí, sino que envíe los valores de las variables al servidor SSO. - El servidor SSO tomará los valores, creará una cookie y la colocará en el dominio principal
domain.com
(para recordar a ambosmy website
ysso server
está en el subdominio del dominio principal, que también no está en Drupal). Luego, el sitio drupal puede iniciar sesión utilizando esa cookie.
Sé que es una pregunta difícil, solo estoy buscando consejos sobre cómo debo comenzar. como dicen "no debes hackear el núcleo". Entonces, mis preguntas son:
- ¿Dónde debo buscar para comprender cómo funciona la autenticación de Drupal y la gestión de sesiones en profundidad?
- ¿Hay alguna forma de llamar a las funciones al
includes/session.inc
usar ganchos (como dicen los comentarios con funciones "solo para uso interno / no se debe modificar")?
NOTA: utilizaré el mismo método para registrar al usuario, de modo que el registro permanezca en la base de datos central del servidor SSO. Y durante eso, se colocará una contraseña basura para el mismo usuario en la base de datos del sitio Drupal (ya que la contraseña no se verificará al iniciar sesión).