LTI v1.1: Single Sign-On (Launching OpenLearning from a Consumer application)

This guide covers using the LTI v1.1 (IMS Global Learning Tools Interoperability) standard for signing users into OpenLearning, using OpenLearning as an LTI Tool Provider.

This guide assumes that you're implementing or configuring LTI on your own system or application.

**If you are setting up LTI within an LMS, the following guides may be of particular use:

OpenLearning also supports the generation of institution-level LTI launch requests via an API.

The general flow is as follows:


Class and Institution Registration

LTI can be registered at either the:

  • the Class level (one registration for each particular course delivery), or
  • the Institution level (one registration for all courses/classes under an institution).

The registration information (consumer key, secret, and launch URL) can be found under:

  •  Administer Learners > Advanced, or
  • Institution Settings > Integrations


What LTI is used for

LTI specifies how to generate a special "LTI basic launch" link. This link can then be issued to a user, who then follows the link to "launch" OpenLearning. This link encodes within it all user authentication and contextual information, so that upon following this link OpenLearning can:

  1. create/provision an account for this user if one does not already exist on the OpenLearning system (assigning profile information such as profile picture, external user id, etc.), or prompt the user to select an existing OpenLearning user account to associate with this new login,
  2. automatically sign the user into OpenLearning using their previously associated account login,
  3. determine if the user is a course administrator, and prompt the user to associate this launch link with a particular OpenLearning class delivery (or create/provision a new one, see: LTI: Provisioning Roles, Classes, and Courses),
  4. determine if the user is a learner who is to be automatically enrolled into the associated OpenLearning class delivery (upon launch)

A typical use case may be:

  1. A new launch link is set up within a Consumer system. This launch link specifies a new course context with the context_id="intro101"
  2. The Consumer system generates a launch link for "User S" (for learner) with user_id="userS". This launch link specifies that "User S" should be enrolled as a learner in the "intro101" context.
  3. "User S" (for learner) of the Consumer system follows the launch link to OpenLearning (as the Tool Provider), and is prompted to create an account or sign in to OpenLearning. This account is now associated with the Consumer's user_id ("userS").
  4. "User S" is then presented with a screen showing that this class has not yet been set up, as OpenLearning does not recognise the "intro101" context.
  5. The Consumer system generates a launch link for "User T" (for teacher) with user_id="userT". This launch link specifies that "User T" should be a teacher in the "intro101" context.
  6. "User T" (for teacher) of the Consumer system follows the launch link to OpenLearning, and is prompted to create an account or sign in to OpenLearning. This account is now associated with the Consumer's user_id ("userT"). (If this user has already performed this step in any previous launch, they're instead signed straight in to that account.)
  7. "User T" is then presented with a screen showing that this class has not yet been set up, and is prompted to select an existing class, create a new class in an existing course (of which they are an admin), or create a new course (and class within it) as the class delivery with which the "intro101" context will be associated.
  8. "User S" (the learner) wishes to access this course again later via the Consumer system, so the Consumer system generates a new launch link for "User S" with user_id="userS" (as launch links have expiry times). This launch link again specifies that "User S" should be enrolled as a learner in the "intro101" context.
  9. "User S" follows this launch link to OpenLearning, where they are automatically signed in (using the associated user account from step 3.) and automatically enrolled into the class which was associated with "intro101" in step 7.
  10. "User S" can now sign into this OpenLearning class via the Consumer application at any time, and participate in the OpenLearning course environment.

This demonstrates the ability for the Consumer application to control the generation of LTI launch links such that:

  • The Consumer can specify the roles (teachers/learners) within the OpenLearning classes
  • The Consumer can specify which users are enrolled in which classes
  • Courses/classes can be provisioned or associated to launch link contexts (by teacher roles)

LTI itself does not specify functionality for removing learners from classes. The recommended way to remove learners is by using the OpenLearning API.

Generating a Launch Link

There are two options for generating a launch link:

  1. Following the IMS Global LTI basic launch link specification
  2. Using the OpenLearning API to generate the launch link

The first option does not rely on the OpenLearning API and implements a standard launch method which can be used for many learning tools used across the education technology sector. The second option does not require the Consumer to implement the LTI standard, and instead uses the OpenLearning API to ask the OpenLearning system to generate the appropriate launch link information when required.

Once the launch data has been generated, a common approach is to link the user to a page where a form is populated with the required LTI POST parameters, and this form is automatically submitted for the user. An example of this type of launch can be found under section B.5 of the LTI Implementation Guide.


Note that OpenLearning requires the parameters:



resource_link_id={your unique link ID}

user_id={your unique user's ID}


lis_person_name_full={your user's name}

lis_person_contact_email_primary={your user's email}

context_id={the course/class identifier, required if doing an institution LTI launch}

(values with { } denote values to be provided, and do not require the braces verbatim)


The following is a Common Cartridge XML file which configures a LTI basic launch link:

<?xml version="1.0" encoding="UTF-8"?>

<cartridge_basiclti_link xmlns="http://www.imsglobal.org/xsd/imslticc_v1p0"
    xmlns:blti = "http://www.imsglobal.org/xsd/imsbasiclti_v1p0"
    xmlns:lticm ="http://www.imsglobal.org/xsd/imslticm_v1p0"
    xmlns:lticp ="http://www.imsglobal.org/xsd/imslticp_v1p0"
    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation = "http://www.imsglobal.org/xsd/imslticc_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticc_v1p0.xsd
    http://www.imsglobal.org/xsd/imsbasiclti_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imsbasiclti_v1p0.xsd
    http://www.imsglobal.org/xsd/imslticm_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticm_v1p0.xsd
    http://www.imsglobal.org/xsd/imslticp_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticp_v1p0.xsd">
    <blti:description>Launches the OpenLearning platform to deliver courses</blti:description>
2replies Oldest first
  • Oldest first
  • Newest first
  • Active threads
  • Popular
    • PetCloud
    • PetCloud
    • 2 yrs ago
    • Reported - view

    Hi Support,


    Is there any example for LTI integration using imsglobal for openlearning. I am not able to find any suitable examples.

    • PetCloud the IMS documentation has an example launch form:

      https://www.imsglobal.org/specs/ltiv1p0/implementation-guide under section "B.5 Basic LTI Sample Launch"

      To provide the correct value for the "oauth_signature" parameter, an LTI consumer (or OAuth signing) library can be used in the language of your implementation.

Like3 Follow
  • 9 mths agoLast active
  • 2Replies
  • 1056Views
  • 10 Following