Seamless assessment management with Azure LTI Assessment App v2
Published May 26 2022 06:08 AM 1,035 Views
Copper Contributor


The author of this application and the blog is Neha Ranade, who is a final year computer science student at University College London. This application was built as part of an industry exchange program (IXN) under the supervision of Dr Graham Roberts and Lee Stott.


What is Azure LTI Assessment Application v2?

Built using the LTI protocol, ‘Assessment Application v1’ is an open-source assessments tool that eases educators of the pain of creating assessments in multiple learning platforms and transferring question banks across platforms. Developed by a former UCL student, Victoria Demina, more information about this tool can be found in here .

Assessment Application v2 is an extension of ‘Assessment Application v1’ with new features that increase its compatibility and usability, while still reinforcing its value as a proof-of-concept cross-platform assessment tool.

The following key features have been developed,

  1. Compatibility with Canvas, along with improved documentation for compatibility with Moodle
  2. Cross-platform question bank parsing ability
  3. New question formats

How to get started and setup the ‘Assessment Application v2’ with Canvas and Moodle?

  1. Deploy the Azure LTI Assessment App using the Deployment Guide.
  2. Configure the application in your LMS using the Configuration Guide, for Canvas and Moodle respectively.
  3. Learn how to create a quiz from the Educator Guide.  

How to set up an instance of Assessment Application v2 locally?





The figure summarizes the components used for the local setup. Azure CLI toolkit, Cosmos DB emulator and Azurite can be used to emulate Azure Functions, Cosmos Database and Azure Blob respectively. An application registration for this local assessment application needs to be added to Azure Active Directory to allow authentication.

A key component in emulating the assessment application locally is integrating the front end (react application), backend (Azure functions) and authentication (Azure Active Directory) to work together – so that only one endpoint is exposed to users. This is done using a local instance of Azure Static Web Apps service, which was available as an NPM module called npm-swa. This application redirects requests to the correct service depending on the type of request as shown in the figure above. Each of the other Azure services are configured by using their local emulators, except for Azure Active Directory and Azure Key Vault. Azure Active Directory should not be setup locally because LMS (Learning Management System) instances require third-party authentication services (like AAD) to have a public facing endpoint.

Finally, a local setup guide called has been created for this setup and added into the documentation for the ‘Assessment Application v2’.


How to integrate Microsoft Open-Source Curriculum content onto the ‘Assessment Application v2’?

After deployment and configuration, follow the steps on the educator homepage,  

  1. Click on ‘Upload’
  2. On the drop-down list, click on Microsoft Open-Source Curriculum
  3. Upload the quiz file.

To get started, the following open-source curricula can be used.

  1. Machine Learning for Beginners
  2. Data Science for Beginners 
  3. Web Development for Beginners 
  4. IoT for Beginners 
  5. AI for Beginners

How to transfer existing question banks from Moodle and Canvas into ‘Assessment Application v2’?

Two key question bank formats are supported.

  1. QTI format - The IMS Question and Test Interoperability specification (QTI) defines a standard format for the representation of assessment content and results, supporting the exchange of this material between authoring and delivery systems, repositories, and other learning management systems. Download an existing question bank within Canvas in this format and upload the downloaded XML file into the assessment application.
  2. GIFT format - GIFT format allows someone to use a text editor to write multiple-choice, true-false, short answer, matching missing word and numerical questions in a simple format that can be imported. Download an exiting question bank in Moodle into this format and upload the GIFT file into the assessment application.

What question formats are supported by ‘Assessment Application v2’?

  1. Multiple answer questions
  2. Multiple choice questions
  3. True False questions
  4. Long/Short Answer questions.


The following section reflects the opinions and conclusions of the author after completing development of ‘Assessment Application v2’.


Key learnings from the project?

As the author of this project, my key learnings from the project can be summarized as follows.

  1. Learnt how to integrate the front-end service, backend service, and authentication service under one endpoint using Azure Static Web Applications.
  2. Learnt how to debug open-source software with limited documentation. Learning management systems are open-source and have limited documentation/help when it comes to administration. This served has key challenge and learning opportunity in this project. Posting questions in online forums and debugging error messages in system logs by SSHing into LMS virtual machines was learnt through this project.
  3. Learnt to use open-source frameworks such as FluentUI and realised how useful they are.  
  4. Learnt about openID, JSON web tokens, and OAuth2 flow as it is required communication between LMS and assessment application.


What was interesting?

The most interesting aspect of this project was learning about authentication flows and how they are used to ensure secure communication between the learning management tool and assessment application.

There are some definitions vital in understanding the communication workflow taken from OAuth2 and JWT and LTI specification.

  1. JSON Web Token (JWT): JWT is an open standard to securely send information between a server and client. Each JWT contains JSON objects and Claims, signed using a cryptographic key.
  2. Claims: Claims are key-value pairs contained in a JWT. Claims can be seen as the “information” sent through a JWT.
  3. ID Token: ID token is received by an application once a user successfully authenticates itself. This ID token can be validated by the application to extract information (Claims). All messages sent from the LMS to ‘Assessment Application v1’ are sent as ID tokens (wrapped in JWTs)
  4. Access token: An access token is received by an application after a user successfully authenticates itself. This access token can then be used as a credential for future requests to a server.
  5. Scope: Scope in OAuth2 is a permission that is set on a token that defines the context in which a token may act.
  6. Issuer: Issuer is a field in a JWT that identifies who has created the JWT

In terms of the authentication workflow for communication between ‘Assessment Application v2’ and LMS, the first stage of the workflow is authenticating the user (Educator, Student) and launching the ‘Assessment Application v2’ from the LMS. An OpenID connect launch flow is used at this stage. The key steps of workflow at this stage are the following.

  1. A user opens their LMS and clicks on the ‘Assessment Application v2’ tool. This initiates a “login” request.
  2. The ‘Assessment Application v2’ responds back by redirecting user to their authentication provider such as Azure Active Directory
  3. The authentication provider (AAD) validates the user back to the LMS
  4. Upon successful validation, the LMS responds back with an ID Token.
  5. ‘Assessment application v2’ validates the ID Token to receive Claims. These claims contain information about course details, user’s name, user’s role, and others.
  6. Based on the user’s role – Educator or Student, the ‘Assessment Application v2’ redirects the user to respective homepage.

Why was this project challenging?

The project is challenging due to the following reasons. First, working on someone else's codebase with limited configuration/set-up support is tough. This is because debugging complex configuration/authentication issues requires good understanding of the existing codebase. Secondly, working with free/open-source versions of learning management systems can be tough. This is because when faced with issues, there is no one to contact and opening "support tickets" can take weeks to receive an answer.


How has this project helped gain new skills?

As someone with limited to no cloud computing skills before this project, this project has taught me how to use a variety of Azure services. Moreover, I learnt to use React and C# through the course of this project. Finally, I improved by debugging and development skills through the various iterations of the project.


How can ‘Assessment Application v2’ be extended/contributed?

Azure LTI Assessment App v2 welcomes contributions and suggestions. Currently, the quiz only supports four question types, along with limited flexibility for educators in creating complete quizzes. However, the assessment application is designed to be an extensible software product, so that new types of assessments can be added by open-source contributors. Also, there is an opportunity to adapt the application for other LMS systems, such as Blackboard, and Open edX. Prerequisites for open-source contributors, as well as useful resources, can be found here. 

Version history
Last update:
‎May 26 2022 06:16 AM
Updated by: