2008-12-09 21 views
5

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.Pasando credenciales entre sitios

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 iniciará sesión silenciosamente, 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.

La primera idea 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 coincida con ciertos criterios (por ejemplo: son 32 caracteres hexadecimales), no lo haga antes de MD5 comparando con la versión de Joomla - el problema con eso es que cualquiera podría (al descubrir la contraseña encriptada) luego usar eso 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?

Respuesta

4

Usted puede hacer lo siguiente para una instalación segura de inicio de sesión único una solución:

  • generar una al azar (con PRNG) Token basa para el usuario de Joomla (guardar este)
  • Enviar este token internamente (a través un servicio web, etc, que -keep sobre https, o fuente de datos local) a Moodle
  • Mientras que el envío de esta señal también le debe informar sobre el identificador de usuario de Moodle, que pertenecen a token es (por lo tanto enviar símbolo + identificador de usuario)
  • Almacene este token + ID de usuario en Moodle
  • Cree un enlace con este token en Joomla con este token (puede usar querystring tan pronto como caduque el token después del primer uso pero 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.)
0

Si está utilizando 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.

1

Podría utilizar 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.

Hay también una guía que se encuentra aquí: http://myjoomlaextensions.com/images/fbfiles/files/MoodleBridge.pdf de "puente entre Moodle y Joomla

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

Su kilometraje puede variar al intentar utilizar estas soluciones en diferentes dominios.

Cuestiones relacionadas