Learning Tools Interoperability Migration Guide
The Learning Tools Interoperability Migration Guide specification defines standards and protocols for educational technology integration.
IP Disclosures
IP disclosures are not listed yet.
List of Contributors
Contributors are not listed yet.
Abstract
This Learning Tools Interoperability® (LTI®) document provides implementation guidance for tools and platforms migrating from earlier versions of LTI (v1.0, v1.1, and v1.2) to LTI v1.3 and the LTI Advantage specifications.
LTI Migration Guide
Introduction
While drastically modifying the runtime behavior of LTI, the LTI 1.3 specifications aimed at content backward compatibility by not introducing new concepts that would require a redefinition of what makes an LTI link. For example, a course already set up with links and grade book columns can see the tool be switched from 1.1 to 1.3 without having to modify those links or apply any data migration on the content, the tool can be switched to LTI 1.3 'in flight', each LTI 1.1 parameter having a counter part in the LTI claims found in the LTI 1.3
id_token.While the above represents the ideal case, in practice some migration work might still be needed on the tool side as some ids may have shifted; for example, the user id may be a new id, following the adoption of the OpenId Connect flow in LTI 1.3. Other identifiers may have shifted too.
In LTI 1.3, the tool OAuth
client_idis not the counter part of theoauth_consumer_key; the tool needs to reconcile the tool's deployment identified by the LTI 1.3deployment_idto an actual account.This document is a companion to the LTI 1.3 specification IMS Global Learning Tools Interoperability® Core Specification v1.3 that exposes the main changes introduced with LTI 1.3. It also introduces a dedicated claim to carry the LTI 1.1 legacy data allowing the platform to keep exposing previous identifiers and thus allow the tool to offer an uninterrupted service when it is transitioned to use LTI 1.3 payloads.
For simplicity purposes, this specification will use the terminology of LTI 1.1 to refer to LTI 1.0, LTI 1.1, LTI 1.2 and their security patch releases.
Documentation
The following LTI v1.3 and LTI Advantage related specification documents are available:
Conformance Certification
IMS offers a process for testing the conformance of products using the IMS certification test suite. Certification designates passing a set of tests that verify the standard has been implemented correctly and guarantees a product’s interoperability across hundreds of other certified products. The LTI Advantage Conformance Certification Guide IMS Global Learning Tools Interoperability® Advantage Conformance Certification Guide provides details about the testing process, requirements, and how to get started.
1.1/1.3 equivalent
Link URLs must stay intact
The details in this migration guide assume that the unchanging part of an LTI Link across migration is the Link URL itself. This helps ensure that a link migration can be supported across import/export workflows where links are packaged in Common Cartridge content packages (where the only way that a link can be imported is via the "domain matching" methodology). There's no support in this document for specifying a set of "translation rules" that could deterministically change the form of link URLs across the migration process; rather, we assume that the link URL itself remains the same. Some LTI Platforms may choose to provide functionality like this, but that would be a vendor-specific feature. Note that this means that the Link URL in LTI 1.1 should become the Target Link URL, unchanged, after a migration to LTI 1.3; the Redirect URL used in LTI 1.3 for a Tool may very well be different to the 1.1 Link URL.
Deployment Id and multi-tenant model
LTI 1.1 deployment model usually centered around the sharing of a consumer key, identifying the deployment, and a shared secret, securing it. Each new deployment had typically its own key and secret. This model was a good fit when most learning platforms were deployed on premises. Nowadays, Software as a Service model (SAAS) is a prevalent model. To better support this model, LTI 1.3 separates the registration of the tool (security and configuration) from its actual deployment.
Register once
A tool typically registers once with the LMS platform; registering includes the exchange of keys and the various other configurations needed for the tool to function such as the OpenID and OAuth Token endpoints.
A tool registration is identified as a
client_idissued by the learning platform (the issuer).Deploy multiple times
A tool may then be deployed to many organizations running under the same learning platform. Each deployment is identified by a unique
deployment_idminted by the learning platform.oauth_consumer_key(issuer, client_id, deployment_id)deployment_idper(issuer, client_id)tuple and registration and deployment may then still be done as a single operation.oauth_See the LTI 1.3 Core Specification IMS Global Learning Tools Interoperability® Core Specification v1.3 and IMS Security Framework IMS Global Security Framework v1.0 for more details.
From POST parameters to claims
The table belows maps the 1.1 parameters with their LTI 1.3 claims equivalent; the format for 1.3 is: {claim_uri} or {claim_uri}#property when the claim itself is an object and referring to a property of that claim.
lti_message_typehttps://purl.imsglobal.org/spec/lti/claim/message_typelti_versionhttps://purl.imsglobal.org/spec/lti/claim/version1.3.0user_idsublis_person_name_givengiven_namelis_person_name_familyfamily_namelis_person_name_fullnamelis_person_contact_email_primaryemailuser_imagepicturelis_person_sourcedidhttps://purl.imsglobal.org/spec/lti/claim/lis#person_sourcedidlis_course_offering_sourcedidhttps://purl.imsglobal.org/spec/lti/claim/lis#course_offering_sourcedidlis_course_section_sourcedidhttps://purl.imsglobal.org/spec/lti/claim/lis#course_section_sourcedidresource_link_idhttps://purl.imsglobal.org/spec/lti/claim/resource_link#idresource_link_titlehttps://purl.imsglobal.org/spec/lti/claim/resource_link#titleresource_link_descriptionhttps://purl.imsglobal.org/spec/lti/claim/resource_link#descriptionroleshttps://purl.imsglobal.org/spec/lti/claim/rolescontext_idhttps://purl.imsglobal.org/spec/lti/claim/context#idcontext_typehttps://purl.imsglobal.org/spec/lti/claim/context#typecontext_titlehttps://purl.imsglobal.org/spec/lti/claim/context#titlecontext_labelhttps://purl.imsglobal.org/spec/lti/claim/context#labellaunch_presentation_localehttps://purl.imsglobal.org/spec/lti/claim/launch_presentation#localelaunch_presentation_css_urllaunch_presentation_document_targethttps://purl.imsglobal.org/spec/lti/claim/launch_presentation#document_targetlaunch_presentation_widthhttps://purl.imsglobal.org/spec/lti/claim/launch_presentation#widthlaunch_presentation_heighthttps://purl.imsglobal.org/spec/lti/claim/launch_presentation#heightlaunch_presentation_return_urlhttps://purl.imsglobal.org/spec/lti/claim/launch_presentation#return_urltool_consumer_info_product_family_codehttps://purl.imsglobal.org/spec/lti/claim/tool_platform#product_family_codetool_consumer_info_versionhttps://purl.imsglobal.org/spec/lti/claim/tool_platform#versiontool_consumer_instance_guidhttps://purl.imsglobal.org/spec/lti/claim/tool_platform#guidtool_consumer_instance_namehttps://purl.imsglobal.org/spec/lti/claim/tool_platform#nametool_consumer_instance_descriptionhttps://purl.imsglobal.org/spec/lti/claim/tool_platform#descriptiontool_consumer_instance_urlhttps://purl.imsglobal.org/spec/lti/claim/tool_platform#urltool_consumer_instance_contact_emailhttps://purl.imsglobal.org/spec/lti/claim/tool_platform#emailcustom_keynamehttps://purl.imsglobal.org/spec/lti/claim/custom#keynamerole_scope_mentorhttps://purlimsglobal.org/spec/lti/claim/role_scope_mentorext_https://{domain}/{claimPath}Migrating from Basic Outcome to Assignment and Grade Services 2.0
LTI Advantage introduces a richer API around grades reporting, called Assignment and Grade Services IMS Global Learning Tools Interoperability® Assignment and Grade Services. The API still supports a flow similar to Basic Outcome where on each resource link message the end point where to send scores is passed in:
lis_outcome_service_urlhttps://purl.imsglobal.org/spec/lti-ags/claim/endpoint#lineitemlis_result_sourcedidsubScores are JSON payloads and passes both the points earned and the points possible rather than a normalized score as in Basic Outcome. However a tool may still set the points possible to 1 and carrying on normalizing the score.
See the Assignment and Grades Services for more details.
Migrating to Deep Linking 2.0
Deep Linking IMS Global Learning Tools Interoperability® Deep Linking 2.0 remains mostly unchanged between version 1.0 and 2.0 from a functional viewpoint; the same kind of content item can be created/picked, and the UI Flow is identical:
However, the actual payload being exchanged in the request and in the response are significantly different in their format. The differences are:
id_tokenwith a dedicated claim for deep linkingSee the Deep Linking V2.0 for more detailed mapping between the 2 versions.
Migrating to Names and Role Provisioning Services 2.0
Names and Role Provisioning Service 2.0 IMS Global Learning Tools Interoperability® Names and Role Provisioning Services offers the same functionality as its previous version, the changes mostly focusing on rationalizing the payload:
linkheader rather than being included in the actual response payloadThis service is now protected by an access token; it defines an OAuth scope and the claim to advertise its endpoint in the actual LTI messages.
See the Names and Roles Provisioning Service 2.0 IMS Global Learning Tools Interoperability® Names and Role Provisioning Services for more details.
lti11_legacy_user_idIf the user id is changing with the migration to LTI 1.3, a platform should include the
lti11_legacy_user_idas an additional member attribute. It should contain theuserIdvalue from LTI 1.1 Names and Roles Provisioning Service 1.0 IMS Global Learning Tools Interoperability® Names and Role Provisioning Services for that same user.This allows the tool to migrate the full course roster upfront rather than having to wait for each user to launch and relying on the LTI 1.1 migration claim (see below) to map the old and new user identifiers.
Deprecation of
lis_result_sourced_idNames and Roles Provisioning Service was often used to discover the Basic Outcome
lis_result_sourced_id. This usage is now deprecated in favor of using the actual user id in the score POST from Assignment and Grades service, and this information may no longer be included in the response.LTI 1.1 migration claim
This specification introduces the claim
https://purl.imsglobal.org/spec/lti/claim/lti1p1which allows a platform to pass to the tool a mapping of ids that have shifted with the transition to LTI 1.3, allowing the tool to associate existing records to new LTI 1.3 identifiers.It also allows to securely pass the
oauth_consumer_keyto avoid interruption due to a need to remap the tool to a new registration/deployment.If a platform supports this claim, it MUST include that claim in all messages sent to the tool, including resource links and deep linking messages.
Support for this claim is recommended for platforms that already support LTI 1.1 tools, in particular if the move to LTI 1.3 causes ids to change of value.
Remapping parameters
The following parameters all follow the same rules:
If the launch may actually have happened prior to the migration, and if the parameter's value is not the same as its LTI 1.3 equivalent, the platform MUST include the parameter and its LTI 1.1 value. Otherwise the platform MAY omit that attribute or have it be the same value as its LTI 1.3 equivalent.
The parameter's value MUST be the same as the value that would have been passed would the current user have done the launch with the tool under its LTI 1.1 configuration.
The migration data is immutable, the platform MUST NOT change the mapping once it has been advertised.
user_iduser_idsubcontext_idcontext_idhttps://purl.imsglobal.org/spec/lti/claim/context#idtool_consumer_instance_guidtool_consumer_instance_guidhttps://purl.imsglobal.org/spec/lti/claim/tool_platform#guidresource_link_idresource_link_idhttps://purl.imsglobal.org/spec/lti/claim/resource_link#idOAuth Consumer Key and automatic re-binding of deployment id
In addition to allowing a mean to map identifiers that have changed during the migration, this specification also allows to securely pass in the LTI 1.1 OAuth Consumer Key for simplified or automatic account migration.
In LTI 1.1 it is common practice for a tool to associate a tool's account to the OAuth Consumer Key, the tool often issuing the actual key value. The flow is reversed in LTI 1.3 where the platform issues a
deployment_idto identify each tool's deployment and the tool usually has to bind that id to an account, for example by prompting the user when a tool is first launched after its deployment.Passing the LTI 1.1
oauth_consumer_keymay actually allow to automate or at least ease the re-binding of the deployment to a pre-existing account.As the
oauth_consumer_keyis publicly exposed, it cannot be trusted on its own to transition the existing account to the newdeployment_id. This specification relies on the pre-established LTI 1.1 trust using the shared secret to assert the migration request is coming from the actual LTI 1.1 tool deployment identified by theoauth_consumer_key.oauth_consumer_key
The LTI 1.1
oauth_consumer_keyMUST be added to the claim.oauth_consumer_key_sign
The platform MAY include a signature of the
oauth_consumer_keyto allow the tool to automate a migration. Theoauth_consumer_key_signis built using the following steps:oauth_consumer_keydeployment_id: the LTI deployment ID found in the enclosing JWTiss: as found in the enclosing JWTclient_id: the OAuth client id of the tool, as found as one of the values for theaudclaim in the enclosing JWTexp: as found in the enclosing JWTnonce: as found in the enclosing JWTA platform should usually not automatically migrate a tool based on the
oauth_consumer_keyif theoauth_consumer_key_signproperty is not present or if the signature was not verified.Example:
Rolling back to LTI 1.1
This specification does not cover any process to rollback to LTI 1.1 once a migration is completed. However a tool MAY consider retaining the LTI 1.1 identifiers and the shared secret. The tool MAY then add new properties to existing entities to store the LTI 1.3 new identifiers rather than replacing values in existing properties, allowing the tool to still be able to receive LTI 1.1 requests.
`;