- 5 Minutes to read
- Print
- DarkLight
- PDF
LTI connector
- 5 Minutes to read
- Print
- DarkLight
- PDF
LTI - Learning Tools Interoperability connector
General presentation
The LTI protocol, or Learning Tools Interoperability, is a standard used in online learning to allow the seamless integration of different learning applications, such as learning management systems (LMS) and external tools. It allows applications to interact consistently, providing users with seamless access to various educational resources without having to log in separately to each tool.
Educational Interoperability:
LTI was developed to solve the problem of interoperability between online learning systems, such as LMS, and external learning tools.
Launching external tools:
One of the main goals of LTI is to allow instructors and learners to easily access external tools and content without having to log in separately to these resources. External tools can be quizzes, simulations, multimedia resources, etc.
Single sign-on:
LTI supports single sign-on, which means that users do not need to manage multiple usernames and passwords to access resources. Authentication is done transparently.
Data transfer:
LTI allows the transfer of relevant data between platforms, including information about the user, the course, and other contextual data to personalize the learning experience.
Security:
LTI integrates security mechanisms to ensure that only authorized individuals have access to resources and to prevent potential attacks.
Open standards:
LTI is based on open standards, which promotes its adoption and widespread use in the field of online education.
Principle
An LTI request allows access to data from an external tool based on the type of request and the role of the user who will send it.
For example, a learner will request the display of a resource available from an external tool so that they can play it during their online training directly from Xperience. To send an LTI request, you need to define authentication variables specific to each external provider.
LTI connector
In the Xperience settings, the "Connectors / LTI Connectors" menu has been added and is managed by privileges:
Configuration / LTI connectors / View LTI connectors
To allow the display of the "LTI Connectors" menu in the settings.
Configuration / LTI connectors / Edit LTI connectors
To allow the addition, modification, and deletion of LTI connectors.
The configuration of an LTI connector consists of:
A name, in order to clearly identify the external content provider concerned
A URL, provided by the external tool to launch the LTI resource
An RSA key, provided by the external tool (either an RSA key or a key set URL)
A connection initialization URL, provided by the external tool
When creating the LTI connector, it provides the following information to be configured in the external tool:
A client ID
A deployment ID
A supplier
A public key URL
An authentication request URL
An access token URL
This information is used to use an OIDC flow to allow user authentication.
Important: We will need to modify the CSP for iframes to access the LTI content => Modify the Config/rewriterules.config file and add the LTI tool URL in iframe-src
External LTI resource
When designing a training course, it is possible to add an LTI resource. To do this, you need to select the LTI connector to use and the URL of the resource in question (or the ID depending on the tool).
The configuration of an LTI resource consists of:
A name, in order to identify the resource
An LTI connector
An ID or a URL, provided by the external tool
LTI request
OIDC flow
Content of the OIDC flow initialization request
Dictionary<string, string> values = new Dictionary<string, string>()
{
{ "iss", [Issuer] }
{ "login_hint", [User.Id] }
{ "target_link_uri", [LtiConnector.UrlConnector] }
{ "lti_message_hint", JsonConvert.SerializeObject(
new
{
[Resource.Id],
[LtiResourceLinkRequest],
[ContentRun.Id],
[isPreview]
}) }
;
Var url = new Uri(QueryHelper.AddQueryString([LtiConnector.UrlConnexion], values));
Claim LTI
Claims LTI add in the JWT token returned by the Authorize endpoint:
var request = new LtiResourceLinkRequest
{
DeploymentId = [DeploymentId],
LaunchPresentation = [LaunchPresentationClaimValueType]
Version = Constants.Lti.Version,
Lis = [LisClaimValueType]
ResourceLink = [ResourceLinkClaimValueType],
Context = [ContextClaimValueType],
Platform = [PlatformClaimValueType],
Roles = [LtiRole.Student],
TargetLinkUri = [LtiResource.UrlContent],
Custom = [CustomParameters],
AssignmentGradeServices = [AssignmentGradeServicesClaimValueType]
};
DeploymentId: ID generated when creating the LTI connector.
LaunchPresentation: Information for displaying the resource (e.g. Iframe).
Version LTI version (1.3).
Read: Information about the platform user.
ResourceLink: Information on the resource in the platform.
Context: Information about the course on the platform.
Platform: General platform information.
Roles: list of LTI roles that use this request. Here, it is the learner who sends the request to display the external resource to play it.
TargetLinkUri: Resource URL in the LTI tool (not used in Moodle).
Custom: Custom parameter for the LTI tool (e.g., force_embed for Moodle).
AssignmentGradeServices: Information for score return and tracking.
Return LTI LineItemScore
When the resource is finished being played by the learner, the external LTI tool sends the score obtained to the address indicated in the AssignmentGradeServicesClaimValueType property of the request.
Endpoint score
This endpoint is an extension of the URL given in the JWT token LineItemUrl (LineItemUrl/scores):
public class LineItemScoreRequest
{
public string UserId { get; set; }
public int ScoreGiven { get; set; }
public int MaximumScore { get; set; }
public DateTime Timestamp { get; set; }
public string ActivityProgress { get; set; }
public string GradingProgress { get; set; }
public string Comment { get; set; }
[JsonExtensionData]
public Dictionary<string, object> AdditionalProperties { get; set; } = new Dictionary<string, object>();
}
Configure the LTI connector
To set up an LTI connector, open Parameters > LTI Connectors > New Connector
Two new privileges have been added:
Settings > LTI connectors > Create and modify LTI connectors
Settings > LTI connectors > See LTI connectors
Access to pages is also subject to the following configuration parameter: Beta Features > Enable LTI Resources
Enter:
Name: Identifies the connector for resources.
A connector URL: Launch URL provided by the external tool.
A type of public key
A public key or a public key set URL: provided by the external tool.
A connection initialisation URL: provided by the external tool.
Some tools will ask for custom parameters, one custom parameter per line (e.g. Moodle):
For Moodle, to access the resource, you need to add a custom parameter for the resource ID and enter as follows: id=[%(IdContent)%] which takes the ID that will be entered in the LTI resource.
Other custom settings can be filled in. E.g. force_embed=1 to indicate that the resource will be integrated into the platform in an iframe.
Once the connector has been created, you will have to click on " Show LTI settings" to be able to configure the platform in the LTI tool, the window contains:
A Client ID: Generated when the connector is created.
A provider: Platform URL.
A deployment ID: Generated when the connector is created.
A public key set URL: The URL that the LTI tool will call to retrieve the public key to verify the signature of the JWT token.
An authentication request URL: A URL that the LTI tool will call to retrieve an authentication JWT token.
An access token URL: A URL that the LTI tool will call to retrieve a JWT token to send scores and tracking.