API Base de datos moodle

API Base de datos moodle

de Sol Garcia -
Número de respuestas: 4
Hola a todos,
Hace unas semanas asistí a Expoelearning, y allí a MoodleParty, donde realice una cuestión que hoy os vuelvo a plantear a vosotros: resulta que estoy creando un moodle que quisiera conectar con una base de datos externa cuyas contraseñas están encriptadas, y no sé si moodle será capaz de desencriptar estos datos.
Así planteé está cuestión en MoodleParty y uno de los informáticos de CV&Consulting (Partner de Moodle en España) me comentó que existía un API de base de datos en moodle que lo que hacia era sincronizar la base de datos externa con moodle, por lo que daría igual la encriptación de la primera, ya que el usuario se autenticaría en la primera y lo que haría moodle es dar acceso una vez logueado en la base de datos externa. ¿Alguien sabe donde puedo encontrar este bloque? Me he vuelto loca y no he sido capaz de encontrarlo.
Gracias por todo, un saludo


Promedio de valoraciones: -
En respuesta a Sol Garcia

Re: API Base de datos moodle

de Xavier Paz -
¿A qué te refieres exactamente con contraseñas encriptadas? me explico. Moodle ofrece la posibilidad de autenticar contra bases de datos externas, es más, creo que puedes crear un plugin de autenticación a medida por si tu sistema tiene determinadas particularidades.

API es un conjunto de funciones comunes que propociona Moodle para llevar a cabo determinadas tareas, pero no es un bloque. El hecho de que las contraseñas de la base de datos externa estén encriptadas no es relevante, ya que de echo Moodle a nivel interno también almacena las contraseñas encriptadas.

Tal vez tu duda sea si al meter el usuario su contraseña, el proceso se encargará de encriptarla según el algoritmo que hayas aplicado y haga la comprobación, o simplemente comparará la contraseña encriptada original con la que se le suministra ¿no?

En cualquier caso, revisa http://docs.moodle.org/es/Matriculación_Base_de_Datos_Externa
En respuesta a Xavier Paz

Re: API Base de datos moodle

de Sol Garcia -
Hola Xavier,
Te comento mis problemas de manera más detallada, resulta que tenemos una base de datos externa con la contraseña encriptada (no sabemos en que formato) de la que queremos coger los datos, y por otra parte el moodle, ¿puede moodle desencriptar estos datos o no es necesario que lo haga?.
Una vez resuelto el primer problema, nos enfrentamos con otro resulta que en este programa "externo" no podemos incluir una url que diga que el usuario está autenticado en moodle, por lo que supongo que ahi no me podré ahorrar las dobles autenticaciones, y aunque pinchen en un enlace dentro de la aplicación para ir a moodle se autenticarán con usuario y contraseña de la base de datos pero deberán picar estos datos de nuevo, no se hará de manera automática. ¿Eso lo puedo solventar de alguna manera? Muchisimas gracias de nuevo!


Sol
En respuesta a Sol Garcia

Re: API Base de datos moodle

de Raul Garcia Canet -
Hola Sol,
Aparte de lo comentado por Xavier, te comento algunas cosas más.

Moodle no desencripta ninguna contraseña, no es necesario. Lo que hace es cifrar la que el usuario le pasa y compara esa cadena cifrada con la que haya en la base de datos almacenada. Si coinciden, entonces es que la contraseña es correcta.

Habitualmente, las contraseñas cifradas (las que tienes en la BD externa y la que cifra moodle) se encontraran en formato MD5 o SHA1(existen funciones en PHP que realizan esta función de maravilla). Te dejo un fichero prueba.php dónde puedes ver un ejemplo de como se cifraria una contraseña en MD5 y en SHA1 usando PHP.

NOTA: Si te sabes alguna de las contraseñas de las que hay en Base de datos externa, puedes usar este fichero para ver que resultado te da en MD5 y en SHA1 y comparar con la contraseña almacenada, a ver cuál de los dos coincide. Así sabrás el formato en que las tienes almacenadas.

Segunda parte:
A lo que te estás refiriendo con la API, es el Plugin de Matriculacion desde BD externa.
Eso se utiliza para que los usuarios cuando accedan a la página de Moodle y se autentifiquen, su autentificación se realice sobre una Base de Datos externa.

No has dicho que clase de programa "externo" tienes, si es una web o una aplicación de Escritorio.

En cualquier caso, lo que se me ocurre, así de pronto es (los pasos en rojo son los que añadiria):

1.- Tu usuario accede a tu programa y mete su usuario y contraseña.
1.1.- Me guardo usuario y contraseña antes de que se cifren.
2.- Tu programa cifra estos datos y los compara con la BD que tienes.
3.- Desde tu programa puedes incluir un botón o un enlace hacia la página de login de moodle.
3.1.- A la página de login, le paso los datos sin cifrar por medio de "POST" (habrá que simularlo o hacerlo mediante campos ocultos o una página intermedia con redirección, como quieras...)

4.- Moodle debe:
4.1- O bien tener los datos del usuario en su Base de Datos
4.2- O bien autenticar al usuario mediante una Base de Datos Externa y para eso hay que configurar la autenticación de usuarios para que trabaje también con BD externa. Eso se hace desde el menu de Administración de moodle, sección "Usuarios->Autenticación->Gestionar Autenticacion"

El paso 3 es el que no queda claro como se haría porque no se que tipo de programa es. Si fuera un web, es muy fácil, pero con un programa de Escritorio,mmmm, no se. Habria que ver cómo se pueden pasar variables por POST (si se puede, claro)

La configuración del Plugin de Autenticación desde BD externa no es muy complicada siempre que en la BD externa se tengan los datos necesarios. Echa un vistazo aquí a ver si te sirve de algo:
http://moodle.org/mod/forum/discuss.php?d=143632#p630643

Espeo que algo te haya aclarado.
Hasta pronto,
Salu2
J. Raul (juagarc4) guay