security joomla passwords single-sign-on moodle

security - Pasar credenciales entre sitios



joomla passwords (3)

Puede hacer lo siguiente para una solución segura de inicio de sesión único:

  • Genere un token aleatorio (con PRNG) basado en el usuario de Joomla (almacénelo)
  • Enviar este token internamente (a través de un servicio web, etc., -mantenerlo a través de HTTPS-, o fuente de datos local) a Moodle
  • Al enviar este token también debe informar a Moodle sobre el ID de usuario al que pertenece el token (por lo tanto, envíe el token + ID de usuario)
  • Guarde este token + ID de usuario en Moodle
  • Cree un enlace con este token en Joomla con este token (puede usar la cadena de consulta tan pronto como expire el token después del primer uso, pero el POST es una mejor idea)
  • Cuando vea este token en Moodle, inicie sesión en el usuario asociado y expire el token (por lo que será seguro contra ataques de respuesta, etc.)

Estoy ejecutando dos sitios diferentes en dos servidores diferentes con dos dominios diferentes. Un sitio está ejecutando Joomla, el otro Moodle. He configurado el servidor de Moodle para que base su autenticación en la tabla de usuarios en el sitio de Joomla, por lo que tenemos una fuente autorizada de información del usuario.

Lo que me gustaría hacer es esto: después de que alguien inicie sesión en el sitio de Joomla, proporcione un enlace al sitio de Moodle que los iniciará de forma silenciosa, simulando una solución de inicio de sesión único. Las contraseñas en Joomla son MD5''d y cada una tiene su propia sal secreta.

El primer pensamiento sobre cómo abordar esto fue decirle a Moodle que las contraseñas se almacenaban en texto plano, luego a través de un formulario oculto de entrada, envía la contraseña cifrada cuando hacen clic en el enlace. Además de los obvios problemas de seguridad con eso, también significaba que si intentaban iniciar sesión a través de la interfaz de Moodle, tendrían que ingresar una cadena MD5 gigante, ya que Moodle cree que su contraseña es la misma.

He estado considerando cambiar el módulo de autenticación en Moodle para que si la contraseña presentada coincide con ciertos criterios (por ejemplo: son 32 caracteres hexadecimales), entonces no lo haga MD5 antes de compararlo con la versión de Joomla: el problema es que cualquiera podría (al descubrir la contraseña encriptada), luego utilícela para iniciar sesión. Lo que necesito es alguna forma especial de enviar la contraseña encriptada de Joomla a Moodle y enviar una señal a Moodle para tratar esa solicitud de inicio de sesión de manera diferente.

¿Alguna idea?


Si estás usando Joomla! 1.5, no olvide los complementos de usuario. Eche un vistazo a plugins / user / example.php. Puede capturar la contraseña durante el evento onLoginUser que puede ayudarlo a conectar los sistemas.


Podrías usar Pro Moodle ( http://www.promoodle.com/ ) o JFusion ( http://www.jfusion.org/ ), ambos de los cuales son proporcionales para crear un sistema de inicio de sesión único para el sistema Joomla / Moodle.

También hay una guía que se encuentra aquí: http://myjoomlaextensions.com/images/fbfiles/files/MoodleBridge.pdf para "crear un puente entre Moodle y Joomla.

Hay una guía para modificar el código de Moodle para crear un sistema de inicio de sesión único aquí: http://moodle.org/mod/forum/discuss.php?d=45126#211486 (¡usar con precaución!).

Su kilometraje puede variar al tratar de usar estas soluciones en diferentes dominios.