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

:discourse2: Résumé Discourse LTI permet à Discourse de s’intégrer à plusieurs systèmes de gestion de l’apprentissage via la norme LTI 1.3.
:open_book: Guide d’installation Ce plugin est inclus dans le noyau de Discourse. Il n’est pas nécessaire d’installer le plugin séparément.

Ce plugin implémente la norme LTI 1.3 pour l’authentification, prise en charge par de nombreux systèmes de gestion de l’apprentissage. Discourse agit en tant qu’« Outil » au sein de la norme LTI. Une fois configuré, les utilisateurs pourront cliquer sur un bouton ou un lien dans leur système de gestion de l’apprentissage et se connecter instantanément à Discourse.

Les instructions précises de configuration varieront selon votre système de gestion de l’apprentissage. Mais en général :

  1. Créez une nouvelle entrée « Outil » dans votre système de gestion de l’apprentissage
  • Version LTI : 1.3
  • URL de lancement : n’importe quelle URL de votre site. Les utilisateurs seront redirigés ici après la connexion
  • URL de demande d’authentification : https://<votre-site-discourse>/auth/lti/initiate
  • URL de redirection : https://<votre-site-discourse>/auth/lti/callback
  • Clé publique de l’outil - laissez vide. Discourse n’envoie jamais de données au LMS
  1. Dans votre LMS, trouvez le « point de terminaison d’autorisation », l’« ID client de l’outil », l’« ID de l’émetteur de la plateforme » et la « clé publique de la plateforme », puis ajoutez-les aux paramètres du site pertinents dans Discourse. Dans Discourse, ces paramètres peuvent être trouvés en recherchant lti dans l’interface des paramètres du site Discourse.

  2. Si votre système de gestion de l’apprentissage garantit que les e-mails des utilisateurs ont été validés, activez le paramètre du site lti email verified. :warning: Attention : Si votre LMS ne vérifie pas les e-mails, activer lti email verified présente un risque de sécurité.

  3. Activez le paramètre du site lti enabled

Si ces instructions ne sont pas adaptées à votre LMS, veuillez publier dans le sujet ci-dessous et nous ferons de notre mieux pour mettre à jour les instructions en conséquence.

Et si mon site est en mode invite_required ?

Si vous souhaitez que vos utilisateurs passent par le flux de rédemption des invitations de Discourse lors de leur première connexion, vous pouvez utiliser les « propriétés personnalisées » LTI pour spécifier un lien d’invitation Discourse. Les nouveaux utilisateurs seront redirigés vers l’invitation, tandis que les utilisateurs existants seront envoyés à l’URL de lancement habituelle. Par exemple :

Nom de la propriété Valeur de la propriété
discourse_invite_link https://discourse.example.com/invites/abcdefg
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 »