Intégration du système de gestion de l'apprentissage Discourse (authentification LTI 1.3)

:discourse2: Summary Discourse LTI allows Discourse to integrate with a number of learning management systems via the LTI 1.3 standard.
:open_book: Install Guide This plugin is bundled with Discourse core. There is no need to install the plugin separately.

This plugin implements the LTI 1.3 standard for authentication, which is supported by a number of learning management systems. Discourse acts as a “Tool” within the LTI standard. Once configured, users will be able to click a button/link on the learning management system, and instantly be logged into Discourse.

Precise setup instructions will vary based on your Learning Management System. But in general:

  1. Create a new “Tool” entry in your learning management system
  • LTI Version: 1.3
  • Launch URL: any URL on your site. Users will be directed here after login
  • Auth Request URL: https://<your-discourse-site>/auth/lti/initiate
  • Redirect URL: https://<your-discourse-site>/auth/lti/callback
  • Tool Public Key - leave blank. Discourse never sends data to the LMS
  1. In your LMS, find the 'Authorization endpoint", “Tool Client ID”, “Platform Issuer ID”, and the “Platform Public Key”, and add them to the relevant site settings in Discourse. In Discourse, the settings can be found by searching for lti in the Discourse site settings UI.

  2. If your learning management system guarantees User emails have been validated, enable the lti email verified site setting. :warning: Warning: If your LMS does not verify emails, enabling lti email verified is a security risk.

  3. Turn on the lti enabled site setting

If these instructions don’t make sense for your LMS, please post in the topic below and we’ll do our best to update the instructions accordingly.

What if my site is invite_required?

If you want your users to go through the Discourse invite redemption flow when they first log in, you can use LTI “Custom Properties” to specify a Discourse invite link. New users will be directed to the invite, while existing users will be sent to the regular launch URL. For example:

Property Name Property Value
discourse_invite_link https://discourse.example.com/invites/abcdefg

Last edited by @tobiaseigen 2025-07-16T21:17:34Z

Check documentPerform check on document:
22 « J'aime »

Avez-vous des instructions spécifiques pour intégrer l’intégration LTI avec Canvas LMS ?

1 « J'aime »

Vous aurez besoin que vos administrateurs effectuent l’intégration.

Je suis l’un de nos administrateurs et aussi un ingénieur logiciel. Je pense que le problème que j’ai a à voir avec les cookies et que « l’état » entre Discourse et Canvas ne correspond pas.

Voici l’erreur que j’obtiens dans les journaux de Discourse :

(lti) Échec d’authentification ! state_mismatch : StandardError, Le paramètre d’état ne correspondait pas à la session

Je pense que cette erreur est générée à partir d’ici : discourse-lti/lib/discourse_lti/lti_omniauth_strategy.rb at main · discourse/discourse-lti · GitHub

Avez-vous des idées ou des pistes à explorer pour m’aider à déboguer cela ? Sur cette page de la documentation Canvas : Overview of an LTI Launch <a name="launch-overview"></a> - Canvas LMS REST API Documentation

Il y a une section « Lancement sans cookies » qui, je pense, est pertinente ici. Mais je ne suis pas sûr à 100 %. Toute aide ou idée serait grandement appréciée.

J’ai réussi à faire fonctionner LTI dans Canvas avec une seule réserve. Voici les étapes que j’ai suivies :

  1. Créez une clé de développeur dans Canvas. Peu importe ce que vous mettez dans la méthode JWK et JWK public

  2. Dans les paramètres LTI de Discourse, remplissez vos paramètres

  3. Pour la clé publique, vous pouvez naviguer vers https://\u003cvotre_url_canvas\u003e/api/lti/security/jwks et copier la deuxième clé. Ensuite, vous pouvez aller sur https://8gwifi.org/jwkconvertfunctions.jsp et la coller là-bas et convertir. Ensuite, copiez le texte entre -----BEGIN/END PUBLIC KEY----- et collez-le dans la Clé publique de la plateforme Lti dans les paramètres LTI de Discourse. Ensuite, enregistrez.

Voici la réserve. Ces JWK que Canvas génère sont mis à jour, apparemment mensuellement. Une fois que cette deuxième clé change, LTI cessera de fonctionner et vous devrez la remplacer par la nouvelle en suivant l’étape 3.

Le plugin LTI de Discourse devra prendre en charge une URL JWK publique pour rester à jour.

2 « J'aime »

Puis-je avoir plusieurs LMS intégrés à un seul Discourse ?

:partying_face: Ce plugin est maintenant inclus dans le cœur de Discourse dans le cadre de Bundling more popular plugins with Discourse core. Si vous auto-hébergez et utilisez le plugin, vous devez le supprimer de votre app.yml avant votre prochaine mise à niveau.

1 « J'aime »