Herramientas de usuario

Herramientas del sitio


es:manual:integracion:webservices

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
es:manual:integracion:webservices [2023/02/02 21:04] rootes:manual:integracion:webservices [2023/05/23 19:35] (actual) – [Ejecución de un test desde un sistema externo] root
Línea 74: Línea 74:
 |getSubjectListStudent  | ''userName'', ''systemIdentifier'', ''language'' | Devuelve la lista de asignaturas a las que puede acceder el alumno en el idioma selecionado | |getSubjectListStudent  | ''userName'', ''systemIdentifier'', ''language'' | Devuelve la lista de asignaturas a las que puede acceder el alumno en el idioma selecionado |
 |getTestQuestions |''idTest'',\\ ''colaborative'',\\ ''hostAdress'',\\  ''userName'',\\ ''systemIdentifier'',\\ ''rsaSha1Signature'' | Devuelve un documento XML en formato SQTI que contiene la lista de todas las posibles preguntas que podrían aparecer en un determinado test. ESte método esta pensado para transmitir a un sistema externo de una sola vez un conjunto de preguntas de Siette, por ejemplo a un dispositivo móvil | |getTestQuestions |''idTest'',\\ ''colaborative'',\\ ''hostAdress'',\\  ''userName'',\\ ''systemIdentifier'',\\ ''rsaSha1Signature'' | Devuelve un documento XML en formato SQTI que contiene la lista de todas las posibles preguntas que podrían aparecer en un determinado test. ESte método esta pensado para transmitir a un sistema externo de una sola vez un conjunto de preguntas de Siette, por ejemplo a un dispositivo móvil |
-|beginTestSession |''idTest'',\\ ''colaborative'',\\ ''hostAdress'',\\  ''userName'',\\ ''systemIdentifier'',\\ ''rsaSha1Signature''  | Este método crea una sesion de un test en Siette para un determinado alumno, y devuelve el identificador de la sesion. Una vez creada la sesion, el test puede realizarse mediante llamadas HTTP que contengan la cadena de autenticación |+|beginTestSession |''idTest'',\\ ''colaborative'',\\ ''hostAdress'',\\  ''userName'',\\ ''systemIdentifier'',\\ ''rsaSha1Signature''  | Este método crea una sesión de un test en Siette para un determinado alumno, y devuelve el identificador de la sesión. Una vez creada la sesión, el test puede realizarse mediante llamadas HTTP directamente a la pagina web de comienzo del test, por ejemplo "https://www.siette.org/siette?idsesion=SSS&idioma=III&xml=X&token=TTT&urlBack=BBB" en donde SSS representa el identificador de la sesión, obtenido al invocar al servicio web ''beginTestSession''; III el códigpo de idioma; X indica si Siette debe devolver las preguntas compuestas en HTML con la interfaz normal, o bien solo un esquema de la pregunta en XML; TTT el token obtenido anteriormente mediante el servicio web ''authenticateUser'' o ''authenticateExternalUser''; y BBB la url a la que Siette invocará una vez concluido el test para enviar los resultados. |
 |getSessionScore | ''idsession'' | Devuelve en forma de cadena de caracteres la calificación final obtenida en la sesion cuyo identificador se pasa como parámetro. | |getSessionScore | ''idsession'' | Devuelve en forma de cadena de caracteres la calificación final obtenida en la sesion cuyo identificador se pasa como parámetro. |
 |hasExpiredSIETTESession | ''credentialIdentifier'' | Devuelve ''true'' si la credencial que se obtuvo ha expirado. | |hasExpiredSIETTESession | ''credentialIdentifier'' | Devuelve ''true'' si la credencial que se obtuvo ha expirado. |
Línea 83: Línea 83:
  
 ^Parámetro ^Tipo ^Contenido ^ ^Parámetro ^Tipo ^Contenido ^
-| ''userName'' | ''string'' | Cadena alfanumerica de menos de 16 caracteres que contiene el identificador del usuario |+| ''userName'' | ''string'' | Cadena alfanumérica de menos de 16 caracteres que contiene el identificador del usuario |
 | ''systemIdentifier'' | ''string'' | Identificador para Siette del sistema externo. | | ''systemIdentifier'' | ''string'' | Identificador para Siette del sistema externo. |
 | ''rsaSha1Signature'' | ''string'' | Cadena de caracteres correspondiente al cifrado (usando la clave privada del sistema) mediante RSA SHA-1 de la cadena de caracteres obtenida con la concatenacion de ''userName@rsaSha1Signature''. Siette descifrará este mensaje mediante la clave pública y validará que corresponde al usuario que realiza la petición| | ''rsaSha1Signature'' | ''string'' | Cadena de caracteres correspondiente al cifrado (usando la clave privada del sistema) mediante RSA SHA-1 de la cadena de caracteres obtenida con la concatenacion de ''userName@rsaSha1Signature''. Siette descifrará este mensaje mediante la clave pública y validará que corresponde al usuario que realiza la petición|
Línea 124: Línea 124:
 [[https://www.siette.org/siette/services/External?wsdl]] [[https://www.siette.org/siette/services/External?wsdl]]
    
 +==== Ejecución de un test desde un sistema externo ====
 +
 +=== Acceso al test ===
 +
 +Los servicios web proporcionan un mecanismo de autenticación basado en la confianza entre dos sistemas, de manera que Siette confía en que los datos que solicita un sistema externo son correctos. Por ejemplo, Siette no cuestiona si el usuario que le pasa el sistema externo ha entrado en el sistema correctamente (por ejemplo utilizando una contraseña válida), o si el usuario esta autorizado o no a acceder a ese test en concreto (siempre y cuando este test pueda accederse desde éste sistema externo), simplemente confía en que el sistema externo ha hecho su trabajo y garantiza que los datos son correctos.
 +
 +Por ejemplo, si un test de una asignatura está disponible para acceso desde un sistema externo basado en Moodle, desde el punto de vista de Siette, a este test tendrán acceso todos los alumnos dados de alta en el sistema Moodle. Es responabilidad de Moodle gestionar a qué alumnos proporciona el enlace correspondiente para que puedan acceder a Siette.
 +
 +Sin embargo, hay algunos controles de acceso que Siette sigue aplicando, como la contraseña de acceso, el intervalo temporal de acceso, etc. Estas comprobaciones pueden estar duplicadas con el sistema externo (por ejemplo Moodle las duplica). Es responsabilidad del usuario configurarlas en uno u otro sistema.
 +
 +=== Ejecución ===
 +
 +Para iniciar el test debe obtenerse una URL de inicio, para lo cual hacen falta (1) el token obtenido previamente con el servicio ''authenticateUser'' o ''authenticateExternalUser'' y el identificador de la sesión obtenido al invocar al servicio web ''beginTestSession''. Con estos dos valores se compone una URL que llama a Siette pasándole éstos y otros valores como parámetros mediante el método GET, por ejemplo: 
 +
 +''https://www.siette.org/siette?idsesion=SSS&idioma=III&xml=X&token=TTT&urlBack=BBB'' 
 +
 +en donde:
 +
 +^Parámetro ^Posibles valores ^Caracter ^Comentarios ^
 +|token | Número entero | necesario | Se debe obtener previamente mediante el servicio ''authenticateUser'' o ''authenticateExternalUser'' |
 +|idsesion | Número entero | necesario | Se debe obtener previamente mediante el servicio ''beginTestSession'' |
 +|idioma| "es, "en", "fr" ... | opcional | Indica el idioma del interfaz |
 +| xml | "true", "false", "1", "0" | opcional | Indica si Siette debe devolver una página HTML o bien simplemente una descripción en formato XML |
 +| urlBack | URL | opcional | Servicio o página a la cual se le pasaran como parametros los resultados del test cuando éste concluya. |
 +
 +En la integración mediante Java, para componer esta URL basta con llamar al método getStartTestURL de la clase [[es:manual:integracion:siette.external.integrationhelper|IntegrationHelper]]
 +
 +  * En caso de no usar el parámetro XML, la pagina de inicio del test obtenida en el paso anterior se mostrará en una página o en un **iframe** del navegador. La propia URL contiene los botones de navegación del test al igual que si el test se realizara desde el propio entorno de Siette, por lo que la navegación de preguntas y respuestas se va encadenando de forma natural.
 +
 +  * En el caso en el que las preguntas se requieran en formado XML, añadiendo este parámetro en la primera llamada, Siette devuelve como resultado inicialmente la descripción del test descrito mediante [[es:manual:sqti|SQTI]]. Esta descripción incluye el valor de la sesión Java del servidor de Siette, es decir el valor del parámetro ''jsessionid'' que resultará ser muy importante para poder continuar la sesión Java establecida con el servidor de Siette. A partir de aquí es responsabilidad del cliente externo realizar las siguientes tareas:
 +     * Extraer del formato XML los datos necesarios. Para ello debe analizarse el formato XML. La integracion mediante Java proporciona métodos auxiliares para ello.
 +     * Mostrar los datos al usuario de alguna forma. ("Renderizar" la pregunta)
 +     * Recoger la respuesta del usuario mediante algún tipo de interacción.
 +     * Enviar los resultados a Siette y/o solicitar una nueva pregunta. Para ello se realizarán llamadas alternativamente a los servlets ''Pregunta'' y ''Respuesta'', simulando el comportamiento de la interfaz de Siette, hasta el final del test. Si las llamadas se hacen de forma independiente habrá que incluir en la URL el identificador ''jsessionid'' que sirve para recuperar el resto de los valores de la sesión a través del mecanismo de persistencia de las aplicaciones Java. ((En el caso en el que se haya instalado un distribuidor de carga con varias instancias de Siette corriendo sobre distintos servidores, recuerde que es necesario incluir la cookie ''siette.user'' para poder determinar el servidor que mantiene activa la sesión.)) 
 +
 +Por ejemplo, para obtener la siguiente pregunta de un test deberá llamarse a la URL:
 +
 +''https://www.siette.org/siette/generador/Pregunta;jsessionid=JJJJJJJJJJJJJJJJJJ''
 +
 +Una vez planteada la pregunta y obtenida la respuesta del alumno, el sistema externo deberá enviársela a Siette para que éste sepa que la pregunta ya ha sido contestada y pueda proceder a mostrar la corrección o a seleccionar una nueva pregunta, según proceda. Esta operación se implementa mediante la llamada a la URL:
 +
 +''https://www.siette.org/siette/generador/Respuesta;jsessionid=JJJJJJJJJJJJJJJJJJ?idrespuesta=0000&idrespuesta1=11111''
 +
 +
  
es/manual/integracion/webservices.1675371894.txt.gz · Última modificación: 2023/02/02 21:04 por root

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki