Why use LTI?
Learning Tools Interoperability (LTI) is the industry-standard for Learning Management Systems (LMS) to securely communicate with External Tools like Kyron Learning using Single-Sign On (SSO).
Kyron learning uses LTI 1.3, also known as LTI Advantage, enabling features such as deep-linking (assigning assets directly from the LMS), privacy controls, and Assignments and Grade Services (AGS).
Read more about LTI 1.3 here
1. LTI Registration
Kyron Learning supports LTI Advantage (LTI 1.3) using “Two-Way” or “Manual” Registration. First, you register Kyron Learning as an External Tool on your LMS. Second, you register your LMS as an Integration on Kyron Learning.
Requirements
Kyron Learning Account: Create a Kyron Learning account to access the platform's course creation tools.
Learning Management System (LMS): An LMS platform that supports LTI 1.3 (LTI Advantage). This can be a third-party LMS (e.g. Canvas, Brightspace, Coursera), or it can be your own implementation of an LTI Platform.
1.1 Register Kyron Learning as an LTI Tool on your LMS:
The first step is to register Kyron Learning as an LTI Tool on your LMS. An LMS administrator should be able to register Kyron as an “External Tool” using “LTI Advantage” (LTI 1.3), or by creating a set of Developer keys.
See the “Kyron Learning registration details” below for the fields to use for this registration step.
Once you register, your Learning Platform should display registration details such as Client_ID, Keyset_URL, Access_token_URL, and OpenID_Connect_Auth_URL for you to use to connect to your Kyron account. Save these for Step 2: Register your Learning Platform on Kyron.
💡 Are you using Canvas?
You can use our Canvas Developer Key Deep Linking Setup URL to automatically set up the developer key.
Kyron Learning registration details:
OpenID Connect Initiation Url / OpenID Connect Login URL - Most learning platforms call this an initiation or connect URL.
https://www.kyronlearning.com/lti/v1/initiate
Redirect URLs / Redirect URIs:
https://www.kyronlearning.com/lti/v1/launch
Deep Linking URL / Target Link URI - This URL supports both deep-linking (recommended) and launching a single learning asset resource. You can configure this in your LTI registration to designate deep-linking vs single resource linking. Both use the same link:
https://www.kyronlearning.com/lti/v1/launch
Keyset URL - “Keyset URL” or “Public JWK URL”.
https://www.kyronlearning.com/.well-known/jwks.json
Note: Note: If you need the keyset itself, you can visit https://www.kyronlearning.com/.well-known/jwks.json and copy the result.
1.2 Register LMS as a Kyron Learning Integration:
To register your platform with Kyron Learning, navigate to the LTI Configuration Page (https://www.kyronlearning.com/studio/settings/integrations) using your Kyron Learning Admin account.
All the information on the registration page is required. You will need to provide the following.
Name: Name of your LMS platform.
Description: Brief description of your LMS platform.
Issuer: Unique URL identifying your LMS platform in HTTPS format. E.g. https://canvas.instructure.com or https:/my-platform.brightspace.com
Client ID: Unique identifier your platform uses with Kyron Learning.
Keyset URL: URL to your platform's keyset, often ends includes jwks.
OIDC Auth URL: URL to your platform's OpenID Connect (OIDC) authentication endpoint.
OAuth2 Access Token URL: URL to your platform's access token endpoint [This field is required for learner “completion” and “score” returns]
💡 Are you using Canvas?
Canvas Registration Details look like:
Issuer: https://canvas.instructure.com
Keyset URL: https://sso.canvaslms.com/api/lti/security/jwks
OIDC Auth URL: https://sso.canvaslms.com/api/lti/authorize_redirect
Access Token URL: https://<your_subdomain>.instructure.com/login/oauth2/token
💡 Are you using Brightspace?
Brightspace Registration Details will look like:
Issuer: https://<your_subdomain>.brightspace.com
Keyset URL: https://<your-subdomain>.brightspace.com/d2l/.well-known/jwks
OIDC Auth URL: https://<your_subdomain>.brightspace.com/d2l/lti/authenticate
Access Token URL:
https://<your_subdomain>.brightspace.com/core/connect/token
That’s it! You have completed two-way registration between your LMS and Kyron Learning. You can now launch Kyron LTI links from your LMS.
2. Deploying a Kyron Learning Asset
Now that you have completed the LTI Registration between your LMS and Kyron Learning, you can deploy your first Kyron Learning Asset. There are two ways to deploy an asset via your newly-created LTI connection: Deep Linking (recommended) and Single-Resource Linking.
Note: Many Learning Platforms will require an additional step to enable LTI Tool access at the course level. Depending on your LMS, this may involve “Installing an LTI 1.3 App” or “Creating an LTI 1.3 Deployment”. Assuming your permissions are correctly set up, the Kyron Learning tool should now be available for course assignment.
Option 2.1: Deep Linking (recommended)
LTI Deep linking provides a secure and straightforward method for course designers and instructors to assign Kyron Assets to their students. This enables them to view and assign from a list of available Kyron Assets from within the LMS.
Note: The courses listed in the Deep Linking selector are: Published courses from your Organization, along with Public Courses available to all Kyron users.
Option 2.2: Single-Resource Linking
If your LMS does not support deep linking, you can access resource-based links by exporting them from Kyron Studio (https://www.kyronlearning.com/studio). You will need to log into Kyron Studio and navigate to the specific Kyron Learning Asset that you would like to Link.
From there, you can Export the asset and copy the resource link. It should look like:
https://www.kyronlearning.com/lti/v1/launch?lesson_collection_id=<asset_id>
See https://help.kyronlearning.com/en/articles/10619176-deploying-via-lti-1-3 for more information.
These resource links can be used in your LMS as Assignments or as an Embedded Asset in other LMS activities using an iFrame.
Appendix
Score - Assignment and Grade Services (AGS)
For score reporting to function, your platform must grant Kyron Learning the "score" scope during LTI flow initiation. Major LMS providers will provide an option to enable this as an “Additional Setting” or “LTI Extension”. If you, refer to the related documentation.
Kyron Learning scores each assessment module and transmits the total score of a lesson as a percentage through LTI. In addition, Kyron will transmit when a student starts and completes an assignment.
1. Student Starts Assignment
The platform receives a notification from Kyron Learning when a student begins a Kyron course (either through embedded player or a new tab). The result resembles this:
{
"activityProgress": "Started",
"gradingProgress": "NotReady",
"scoreGiven": 0,
"scoreMaximum": 1,
"comment": ""
}
2. Student Completes Assignment
Upon course completion, Kyron Learning sends a second result, containing the score of the course if there was an assessment section present. If there is no assessment section, Kyron will return the grading status as “PendingManual” and will leave it to the instructor of the course to provide a grade.
https://www.kyronlearning.com/lti/score
The result will look like this:
{
activityProgress: "Completed",
gradingProgress: "FullyGraded",
scoreGiven: 0.9,
scoreMaximum: 1,
comment: "Lessons transcription is available in claim:
https://www.kyronlearning.com/lti/score within this result object.",
"https://www.kyronlearning.com/lti/score": "<JSON_TRANSCRIPT>", // see below
}
If you encounter any questions during the integration process, contact Kyron Learning support at [email protected].
Troubleshooting LTI Connections
Kyron Learning does not appear as a tool during course assignment
It’s possible that your LMS has not enabled this tool for the LMS context you are viewing.
Have you enabled Kyron Learning as an LTI Tool in your course?
Deep Linking window does not show courses
It’s possible that the authentication step has failed between your LMS and Kyron
Are your Connection and Redirect URLs correct?
Does your Kyron Integration page list your LMS information correctly?
I’ve added a Kyron link but I see a blank white screen
It’s possible that the platform does not have access to this asset.
Is the Kyron Asset resource link valid?
Is the Kyron Asset published?
API Errors
Errors during a request to /lti/v1/initiate
1. param is missing or the value is empty: <param_name>
Description: This error occurs when a required parameter is missing or its value is empty in the request sent to the /lti/v1/initiate endpoint.
Potential Causes:
The platform is not sending a required parameter in the request body.
The value of a required parameter is an empty string or null.
Solution:
Ensure that all required parameters (iss, login_hint, target_link_uri, and lti_message_hint) are included in the request body.
Verify that the values for these parameters are not empty strings or null.
2. Could not find issuer: <issuer_uri> or client_id: <client_id>
Description: This error occurs when the client sends an iss (issuer URI) or client_id that does not match the registered platform in Kyron.
Potential Causes:
The client has not registered their platform with Kyron.
The iss (issuer URI) value sent in the request does not match the "Issuer" value entered during platform registration in Kyron.
The client_id value sent in the request does not match the "Client ID" value entered during platform registration in Kyron.
Solution:
Register your platform at https://www.kyronlearning.com/studio/settings/integrations.
Ensure that the iss (issuer URI) and client_id values sent in the request match the corresponding values entered during platform registration in Kyron.
3. Invalid target_link_uri: <target_link_uri>
Description: This error occurs when the target_link_uri sent in the request is invalid.
Potential Causes:
The target_link_uri does not use a secure protocol (HTTPS).
The target_link_uri domain does not match the Kyron domain.
Solution:
Ensure that the target_link_uri uses the HTTPS protocol.
Verify that the target_link_uri domain matches the Kyron domain.
Errors during a request to /lti/v1/launch
1. Missing required params: <param_name>
Description: This error occurs when a required parameter is missing in the request sent to the /lti/v1/launch endpoint.
Potential Causes:
The platform is not sending a required parameter in the request.
Solution:
Ensure that all required parameters (id_token and state) are included in the request.
2. Invalid state token.
Description: This error occurs when the state parameter sent in the request is an invalid JWT token.
Potential Causes:
The state parameter is not a valid JWT token.
The JWT token has been tampered with or is invalid.
Solution:
Verify that the state parameter is a valid JWT token -that’s sent to the platform in the response from /initiate endpoint by Kyron.
Ensure that the JWT token has not been modified or tampered with.
3. Invalid id_token.
Description: This error occurs when the id_token parameter sent in the request is invalid.
Potential Causes:
The id_token is not a valid JWT token.
The JWT token has been tampered with or is invalid.
Solution:
Verify that the id_token parameter is a valid JWT token generated by the LTI platform.
Ensure that the JWT token has not been modified or tampered with.
4. Invalid LTI version. Got: <version> Expected: 1.3
Description: This error occurs when the LTI version specified in the id_token payload is not 1.3.
Potential Causes:
The LTI platform is sending an unsupported LTI version.
Solution:
Ensure that the LTI platform is configured to use LTI version 1.3.
5. Invalid issuer: <issuer_uri>
Description: This error occurs when the issuer (iss) specified in the id_token payload does not match any registered platform in Kyron.
Potential Causes:
The client has not registered their platform with Kyron.
The iss (issuer URI) value in the id_token does not match the "Issuer" value entered during platform registration in Kyron.
Solution:
Register your platform at https://www.kyronlearning.com/studio/settings/integrations
Ensure that the iss (issuer URI) value in the id_token matches the corresponding value entered during platform registration in Kyron.
6. Invalid lesson identifier
Description: This error occurs when the lesson_collection_id parameter sent in the request is invalid, or the corresponding lesson collection does not exist.
Potential Causes:
The lesson_collection_id parameter is missing or invalid.
The specified lesson collection does not exist in the system.
Solution:
Ensure that the lesson_collection_id parameter is included in the request and has a valid value.
Verify that the specified lesson collection exists in the Kyron system.
7. https://purl.imsglobal.org/spec/lti/claim/message_type claim has invalid value. Got: <value>, Expected one of: <expected_values>
Description: This error occurs when the LTI message type in the id_token payload is invalid.
Potential Causes:
The LTI platform is sending an invalid value for the specified claim.
Solution:
Ensure that the LTI platform is sending one of the following as the LTI message type: LtiResourceLinkRequest, LtiDeepLinkingRequest
8. JWT verification error when initiating LTI session.
Description: This error occurs when there is an issue verifying the id_token JWT during the LTI session initialization process.
Potential Causes:
The id_token is not signed with the correct key.
The id_token has been tampered with or is invalid.
Solution:
Verify that the id_token is signed with the correct key registered for the LTI platform.
Ensure that the id_token has not been modified or tampered with.
9. Invalid record creation when initiating LTI session.
Description: This error occurs when there is an issue creating the LTI session record in the database during the initialization process.
Potential Causes:
An internal issue.
Solution:
Reach out to the Kyron support team.
Click here to read more details about our Privacy Policy.