Configuring
Last updated
Was this helpful?
Last updated
Was this helpful?
For versions of LTI previous to LTI 1.3, please refer to the
For a successful launch to occur, LTI Advantage Tools require configuration on both Canvas and inside the tool:
This section has moved to the .
Tools will need to be aware of some Canvas-specific settings in order to accept a launch from Canvas and use the LTI Advantage Services:
Canvas Public JWKs: When the tool receives the authentication response (), tools must . Canvas' public keys are environment-specific, but not domain-specific (the same key set can be used across all client accounts):
Production: https://sso.canvaslms.com/api/lti/security/jwks
Beta: https://sso.beta.canvaslms.com/api/lti/security/jwks
Test: https://sso.test.canvaslms.com/api/lti/security/jwks
Note: The domain for this endpoint used to be https://canvas.instructure.com
. The impetus for this change and other exact details are described in . Tools wishing to implement the Platform Storage spec are required to use the new domain for this endpoint, and all other tools should update this endpoint in their configuration store as soon as possible. This change will eventually be enforced, but for now is not a breaking change - the old domain will continue to work. Any questions or issues are either addressed in the linked article or can be filed as a standard support/partner support case, referencing the OIDC Auth endpoint change.
Authorization Redirect URL: The values and use of this are described in . Since the URL is static, you will want to configure this in your tool. Tools that wish to utilize need to include all possible redirect URLs here.
Client ID: The client_id
of the Developer Key that's been configured in Canvas. Your tool will need to use this in the authentication response to Canvas () and it is also used during the to access .
Deployment ID: The deployment_id
can be optionally configured in the tool. A single developer key may have many deployments, so the deployment ID can be used to identify which deployment is being launched. For more, refer to the LTI 1.3 core specification, . The deployment_id
in Canvas is exposed after a tool has been .
With guidance from the tool developer, developer keys settings can be manually entered by Account Admins. Tools providers can also supply Account Admins with a JSON configuration or configuration URL containing the settings the tool provider has verified to work.
In the manual case, since many of the extensions listed here require more than a few lines of configuration, there is not currently an interface for every extension to be manually configured. Instead, we encourage tool providers to expose a set of URL endpoints that return working configuration options for their tool services.
If providing a URL configuration endpoint is not an option, you can also provide your users with raw JSON that they can paste in for configuration.
In this section, an example JSON configuration is shown followed by a table describing the relevance of each field.
NOTE: Certain placement-specific settings may not be described here. Some examples of JSON configuration snippets and placement-specific settings are also found in the placements sub-menu in the left-navigation of this documentation.
title
Required
string
The default name of the tool in the app index. This value is also displayed if no "text" field is provided within extension settings or placements.
description
Required
string
A description of the tool.
oidc_initiation_url
Required
string
oidc_initiation_urls
JSON object
target_link_uri
Required
string
scopes
string array
Allowed values:"https://purl.imsglobal.org/spec/lti-ags/scope/lineitem"
,"https://purl.imsglobal.org/spec/lti-ags/scope/result.readonly"
,"https://purl.imsglobal.org/spec/lti-ags/scope/score"
,"https://purl.imsglobal.org/spec/lti-nrps/scope/contextmembership.readonly"
,"https://purl.imsglobal.org/spec/lti-ags/scope/lineitem.readonly"
,"https://canvas.instructure.com/lti/public_jwk/scope/update"
extensions
array of JSON objects
The set of Canvas extensions, including placements, that the tool should use. [See extensions parameters below.](#extension-params)
public_jwk_url
required, see notes
string
custom_fields
JSON object
The following fields can be put under extensions
:
domain
string
tool_id
string
Allows tools to set a unique identifier for the tool.
platform
string
The LMS platform that the extensions belong to. This should always be set to "canvas.instructure.com" for cloud-hosted Canvas.
privacy_level
Required
string
What level of user information to send to the external tool. Setting this to "name_only" will include fields that contain the user's name and sourcedid in the launch claims. "email_only" will include only the user's email. "public" includes all fields from "name_only", "email_only", and fields like the user's picture. "anonymous" will not include any of these fields. Note that the "sub" claim containing the user's ID is always included.
Allowed values:anonymous
, publicname_only
, email_only
settings
JSON object
The following can be put under extensions.settings
:
custom_fields
JSON object
icon_url
string
The url of the icon to show for this tool. Can be set within the "settings" object for tool-level icons, or in the "placement" object for placement-specific icons. NOTE: Not all placements display an icon.
labels
JSON object
placements
array of JSON objects
required_permissions
string
selection_height
string
The display height of the iframe. This may be ignored or overridden for some LTI placements due to other UI requirements set by Canvas. Tools are advised to experiment with this setting to see what makes the most sense for their application.
selection_width
string
The display width of the iframe. This may be ignored or overridden for some LTI placements due to other UI requirements set by Canvas. Tools are advised to experiment with this setting to see what makes the most sense for their application.
text
string
The default text to show for this tool. Can be set within "settings" for the tool-level display text, or within "placements" object for placement-specific display text.
The following can be put under extensions.settings.placements
. (Note: extensions.settings.placements
is an array of JSON objects. This table shows the values that can be in those JSON objects.) Values given for a placement in this array will override the value given in extensions.settings
.
placement
Required
string
custom_fields
JSON object
enabled
boolean
Optional, defaults to `true`. Determines if the placement is enabled.
icon_url
string
The url of the icon to show for this tool. Can be set within the "settings" object for tool-level icons, or in the "placement" object for placement-specific icons. NOTE: Not all placements display an icon.
labels
JSON object
message_type
string
The IMS message type to be sent in the launch. This is set at the placement level. Not all placements support both message_types.
Allowed values:"LtiResourceLinkRequest"
,"LtiDeepLinkingRequest"
required_permissions
string
selection_height
string
The display height of the iframe. This may be ignored or overridden for some LTI placements due to other UI requirements set by Canvas. Tools are advised to experiment with this setting to see what makes the most sense for their application.
selection_width
string
The display width of the iframe. This may be ignored or overridden for some LTI placements due to other UI requirements set by Canvas. Tools are advised to experiment with this setting to see what makes the most sense for their application.
text
string
The default text to show for this tool. Can be set within "settings" for the tool-level display text, or within "placements" object for placement-specific display text.
The following settings only apply to certain placements.
accept_media_types
file_menu
string
default
account_navigation, course_navigation
string
Whether the tool should be shown in the sidebar.
Allowed values:enabled
, disabled
icon_svg_path_64
global_navigation
string
use_tray
editor_button
boolean
Whether the tool should open in the tray (a.k.a. sidebar) rather than a modal window. True
means to use the tray, false
means to use a modal window. The tray allows the user to still interact with the page while the tray is open; the modal window blocks the rest of the page while the modal window is open.
windowTarget
account_navigation, course_navigation
string
Whether the tool should be launched in a new tab.
Allowed values:_blank
With LTI Advantage, Canvas moved to using Developer Keys to store tool configuration information. After a developer key is, tools can be deployed to or .
Developer Keys allow tools to set the required parameters to complete the, leverage, and configure other important settings.
Required if public_jwk_url is omitted. The tools to be used during the client_credentials grant for .
The that Canvas should redirect the User Agent to.
Optional region-specific that Canvas should redirect the User Agent to. Each institution's Canvas install lives in a particular AWS region, typically one close to the institution's physical region. If this AWS region is listed as a key in this object, the URL in the value will override the default `oidc_initiation_url`. As of 2023, the regions used by Canvas are: us-east-1, us-west-2, ca-central-1, eu-west-1, eu-central-1, ap-southeast-1, ap-southeast-2.
The that Canvas should pass in the to the login initiation endpoint. This allows tools to determine which redirect_uri to pass Canvas in the authorization redirect request and should be . This can be set at the tool-level, or within the "placements" JSON object for placement-specific target_link_uri's.
The comma separated list of scopes to be allowed when using the.
Required if public_jwk is omitted. The tools to be used during the client_credentials grant for .
Custom fields that will be sent to the tool consumer; can be set at the tool-level or within the "placement" JSON object for placement-specific custom fields. When the tool is launched, all custom fields will be sent to the tool as strings. Read more about
The domain Canvas should use to match clicked LTI links against. This is recommended if is used.
The set of platform-specific settings to be used.
Custom fields that will be sent to the tool consumer; can be set at the tool-level or within the "placement" JSON object for placement-specific custom fields. When the tool is launched, all custom fields will be sent to the tool as strings. Read more about
An object for translations of the "text", used to support internationalization (i18n) / localization (l10n). If the user's Canvas interface is set to one of the languages listed, the tool will display the translated text in place of the value in the "text" field. This JSON object is in the format {"en": "Name", "es": "Nombre"}
, where "en" and "es" are IETF language tags. More specific locales ("en-AU") are preferred over less specific ones ("en"). A partial list of language tags can be found . Can be set within "settings" or individual placements.
Settings to be used for specific tool placements. Values given in this settings.placements
array will override the value given in the `settings` object for that particular placement.
Limits tool visibility to users with certain permissions, as defined on the user's built-in Canvas user roles AND the custom roles that you may have created in Canvas. This is a comma-separated string of one or more required permissions, such as manage_groups_add,manage_groups_delete
or read_outcomes
. The tool will be hidden for users without all specified permissions. If set in placement-specific settings, that placement will be hidden; if set at the tool-level (e.g. under extensions[0]
), each of the tool's placements will be hidden. For true access control, please use (instead or in addition) the custom variable expansion, and check its value in your tool. To learn more about roles and permissions, and to see the permissions available for this parameter, visit the .
Name of the placement that this settings object should apply to.
Custom fields that will be sent to the tool consumer; can be set at the tool-level or within the "placement" JSON object for placement-specific custom fields. When the tool is launched, all custom fields will be sent to the tool as strings. Read more about
An object for translations of the "text", used to support internationalization (i18n) / localization (l10n). If the user's Canvas interface is set to one of the languages listed, the tool will display the translated text in place of the value in the "text" field. This JSON object is in the format {"en": "Name", "es": "Nombre"}
, where "en" and "es" are IETF language tags. More specific locales ("en-AU") are preferred over less specific ones ("en"). A partial list of language tags can be found . Can be set within "settings" or individual placements.
Limits tool visibility to users with certain permissions, as defined on the user's built-in Canvas user roles AND the custom roles that you may have created in Canvas. This is a comma-separated string of one or more required permissions, such as manage_groups_add,manage_groups_delete
or read_outcomes
. The tool will be hidden for users without all specified permissions. If set in placement-specific settings, that placement will be hidden; if set at the tool-level (e.g. under extensions[0]
), each of the tool's placements will be hidden. For true access control, please use (instead or in addition) the custom variable expansion, and check its value in your tool. To learn more about roles and permissions, and to see the permissions available for this parameter, visit the .
A comma-separated list of MIME types, e.g.: "image/jpeg,image/png"
. The LTI tool will be shown in the file_menu placement if the file's MIME type matches one of the MIME types in the list.
An SVG path to be used for the tool's icon in the global_navigation placement. Note: this should be the SVG path itself, not a URL to an SVG image. The value of this parameter will be used as the d
attribute on the SVG's path
element.
This documentation is generated directly from the Canvas LMS source code, available .