diff --git a/source/_images/educators_homepage/lti_clipart.png b/source/_images/educators_homepage/lti_clipart.png new file mode 100644 index 000000000..52759daf3 Binary files /dev/null and b/source/_images/educators_homepage/lti_clipart.png differ diff --git a/source/educators/how-tos/course_development/exercise_tools/set_up_lti_1_3_component.rst b/source/educators/how-tos/course_development/exercise_tools/set_up_lti_1_3_component.rst index a60657bd4..0921a2ff7 100644 --- a/source/educators/how-tos/course_development/exercise_tools/set_up_lti_1_3_component.rst +++ b/source/educators/how-tos/course_development/exercise_tools/set_up_lti_1_3_component.rst @@ -103,6 +103,14 @@ Configure the Setup Tab Use the Setup tab to enter the LTI 1.3 launch values provided by the tool. + +.. note:: + + The values in this section come from the LTI tool. After you save the + XBlock, it will display a different set of values that you will need to + register with the external tool. + + Configure the *Setup* tab as per the following table: .. list-table:: @@ -143,6 +151,10 @@ Configure the *Setup* tab as per the following table: blank. The Open edX platform uses the launch URL and, when configured, the Deep Linking Launch URL as defaults. + If you enter redirect URIs, include every URI that the tool might request. + Entering this field replaces the default list. Redirect URIs must match + exactly, including the path and any trailing slash. + * - Next - Click :guilabel:`Next` to continue. @@ -343,17 +355,26 @@ values that the external tool will need. :alt: LTI Consumer XBlock showing the values an external tool needs to register the Open edX instance. :width: 80% -Common Open edX platform values required by LTI 1.3 tools include: +The LTI Consumer XBlock provides these registration values: -* Issuer (your instance domain e.g. https://openedx.io) * Client ID * Deployment ID * Keyset URL * Access Token URL * Login URL -External tools may use different names for these values and may not require -all of them. Follow the tool vendor's instructions. +.. important:: + + Most LTI tools also require an *Issuer*. The XBlock does not display the + Issuer as a separate value. Derive it from the *Keyset URL* or + *Access Token URL* by removing the ``/api/lti_consumer/...`` path. Do not + add a trailing slash. + + For example, if the Keyset URL is + ``https://openedx.io/api/lti_consumer/v1/public_keysets/...``, the + Issuer is ``https://openedx.io``. An Authoring URL such as + ``https://apps.openedx.io/authoring/...`` is not the Issuer. + Optional: Select Tool Content with Deep Linking *********************************************** @@ -418,5 +439,5 @@ Publish and Test +--------------------+------------------------+----------+----------------+ | Review Date | Working Group Reviewer | Release | Test situation | +--------------------+------------------------+----------+----------------+ -| 2026-06-25 | Aamir Ayub | Verawood | Pass | +| 2026-07-13 | Aamir Ayub | Verawood | Pass | +--------------------+------------------------+----------+----------------+ diff --git a/source/educators/how-tos/course_development/exercise_tools/setup_lti_reusable_consumer.rst b/source/educators/how-tos/course_development/exercise_tools/setup_lti_reusable_consumer.rst index 9fe367490..628c89337 100644 --- a/source/educators/how-tos/course_development/exercise_tools/setup_lti_reusable_consumer.rst +++ b/source/educators/how-tos/course_development/exercise_tools/setup_lti_reusable_consumer.rst @@ -216,15 +216,26 @@ tool will need. :alt: LTI Consumer XBlock showing the values an external tool needs to register the Open edX instance. :width: 80% -Common Open edX platform values required by LTI 1.3 tools include: +The LTI Consumer XBlock provides these registration values: -* Issuer (your instance domain e.g. https://openedx.io) * Client ID * Deployment ID * Keyset URL * Access Token URL * Login URL +.. important:: + + Most LTI tools also require an *Issuer*. The XBlock does not display the + Issuer as a separate value. Derive it from the *Keyset URL* or + *Access Token URL* by removing the ``/api/lti_consumer/...`` path. Do not + add a trailing slash. + + For example, if the Keyset URL is + ``https://openedx.io/api/lti_consumer/v1/public_keysets/...``, the + Issuer is ``https://openedx.io``. An Authoring URL such as + ``https://apps.openedx.io/authoring/...`` is not the Issuer. + External tools may use different names for these values and may not require all of them. Follow the tool vendor's instructions. @@ -293,7 +304,7 @@ Publish and Test +--------------------+------------------------+----------+----------------+ | Review Date | Working Group Reviewer | Release | Test situation | +--------------------+------------------------+----------+----------------+ -| 2026-06-25 | Aamir Ayub | Verawood | Pass | +| 2026-07-13 | Aamir Ayub | Verawood | Pass | +--------------------+------------------------+----------+----------------+ | 2025-12-05 | LTI WG | Ulmo | Pass | +--------------------+------------------------+----------+----------------+ diff --git a/source/educators/index.rst b/source/educators/index.rst index 50cfedf8f..17b721689 100644 --- a/source/educators/index.rst +++ b/source/educators/index.rst @@ -36,29 +36,6 @@ Open edX Educators See All - .. grid-item-card:: Learner Engagement & Communication - :class-card: sd-shadow-md sd-p-2 - :class-footer: sd-border-0 - - .. image:: /_images/educators_homepage/engagement_communication_undraw.png - :alt: Two character communicating via text - :height: 150px - :align: center - :target: navigation/learner_engagement_communication.html - - | :ref:`Course Discussions` - | :ref:`Bulk Emails` - | :ref:`Course Updates` - - - .. button-ref:: navigation/learner_engagement_communication - :color: primary - :outline: - :expand: - - See All - - .. grid-item-card:: Content Creation & Management :class-card: sd-shadow-md sd-p-2 :class-footer: sd-border-0 @@ -105,29 +82,6 @@ Open edX Educators See All - .. grid-item-card:: Data & Analytics - :class-card: sd-shadow-md sd-p-2 - :class-footer: sd-border-0 - - .. image:: /_images/educators_homepage/data_analytics_undraw.png - :alt: A chart of abstract user scores - :height: 150px - :align: center - :target: navigation/data_analytics.html - - | :ref:`View Course Enrollments` - | :ref:`View Learner Data` - | :ref:`View Learner Grades` - | :ref:`View Answer Data` - | :ref:`View Certificate Data` - - .. button-ref:: navigation/data_analytics - :color: primary - :outline: - :expand: - - See All - .. grid-item-card:: Accessibility :class-card: sd-shadow-md sd-p-2 :class-footer: sd-border-0 @@ -172,6 +126,71 @@ Open edX Educators See All + .. grid-item-card:: Learning Tools Interoperability (LTI) + :class-card: sd-shadow-md sd-p-2 + :class-footer: sd-border-0 + + .. image:: /_images/educators_homepage/lti_clipart.png + :alt: LTI: Learning Tools Interoperability + :height: 150px + :align: center + :target: navigation/lti.html + + | :ref:`Add LTI Tools to Course Content` + | :ref:`Add LTI Tools to Course Navigation` + | :ref:`Use Open edX Content in Another LMS with LTI` + + .. button-ref:: navigation/lti + :color: primary + :outline: + :expand: + + See All + + .. grid-item-card:: Learner Engagement & Communication + :class-card: sd-shadow-md sd-p-2 + :class-footer: sd-border-0 + + .. image:: /_images/educators_homepage/engagement_communication_undraw.png + :alt: Two character communicating via text + :height: 150px + :align: center + :target: navigation/learner_engagement_communication.html + + | :ref:`Course Discussions` + | :ref:`Bulk Emails` + | :ref:`Course Updates` + + .. button-ref:: navigation/learner_engagement_communication + :color: primary + :outline: + :expand: + + See All + + .. grid-item-card:: Data & Analytics + :class-card: sd-shadow-md sd-p-2 + :class-footer: sd-border-0 + + .. image:: /_images/educators_homepage/data_analytics_undraw.png + :alt: A chart of abstract user scores + :height: 150px + :align: center + :target: navigation/data_analytics.html + + | :ref:`View Course Enrollments` + | :ref:`View Learner Data` + | :ref:`View Learner Grades` + | :ref:`View Answer Data` + | :ref:`View Certificate Data` + + .. button-ref:: navigation/data_analytics + :color: primary + :outline: + :expand: + + See All + .. grid-item-card:: OLX (Open Learning XML) :class-card: sd-shadow-md sd-p-2 :class-footer: sd-border-0 diff --git a/source/site_ops/how-tos/setup_lti_store.rst b/source/site_ops/how-tos/setup_lti_store.rst index 830fae40d..1d57967bd 100644 --- a/source/site_ops/how-tos/setup_lti_store.rst +++ b/source/site_ops/how-tos/setup_lti_store.rst @@ -75,6 +75,15 @@ A course-level override takes precedence over an organization-level override. An organization-level override takes precedence over the standard Waffle flag and its default value. + +.. note:: + + Most values in this section come from the LTI tool. After you save the + configuration, reference it in the LTI consumer XBlock and save the XBlock, + the XBlock will display a different set of values that you will need to + register with the external tool. + + .. _Create a Reusable LTI Configuration: Create a Reusable LTI Configuration @@ -107,7 +116,8 @@ Create a Reusable LTI Configuration security policy paste in this field. You may use `IMS LTI Reference Implementation `_.) * *Tool Public Key* OR *Tool Keyset URL* - * *Redirect URIs*, if required by the tool + * *Redirect URIs*. Enter every URI that the tool can use as a JSON list, + even when the redirect URI is the same as the launch URL. * (Optional) Enable *Names and Role Provisioning Services* * (Optional) Enable *Deep Linking* * (Optional) *Deep Linking Launch URL*. If Deep Linking is enabled, @@ -115,6 +125,15 @@ Create a Reusable LTI Configuration a separate URL, use the tool's launch URL. * (Optional) Set *Assignment and Grade Services* mode + .. important:: + + Do not leave *Redirect URIs* at its default value of ``[]``. Enter the + tool's redirect URIs explicitly. For example, if the tool uses + ``https://tool.example.com/launch`` as its launch URL, enter + ``["https://tool.example.com/launch"]``. Otherwise, the + launch can fail with ``The preflight response is not valid``. + + .. figure:: /_images/site_ops_how_tos/create_ltistore_config.png :alt: Django Admin form showing the LTI 1.1, LTI 1.3, and LTI Advantage fields for an external LTI configuration.