تكامل نظام إدارة التعليم Discourse (المصادقة 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 إعجابًا

هل لديك تعليمات محددة لدمج تكامل LTI مع Canvas LMS؟

إعجاب واحد (1)

ستحتاج إلى المسؤولين لديك للقيام بالتكامل

أنا أحد مسؤولي النظام لدينا وأيضًا مهندس برمجيات. أعتقد أن المشكلة التي أواجهها تتعلق بملفات تعريف الارتباط و"الحالة" بين Discourse و Canvas غير متطابقة.

هذا هو الخطأ الذي أحصل عليه في سجلات Discourse
(lti) فشل المصادقة! state_mismatch: StandardError، معلمة الحالة لم تتطابق مع الجلسة

أعتقد أن هذا الخطأ يتم طرحه من هنا: discourse-lti/lib/discourse_lti/lti_omniauth_strategy.rb at main · discourse/discourse-lti · GitHub

هل لديك أي أفكار أو أشياء يمكنني البحث فيها للمساعدة في تصحيح هذا؟ في هذه الصفحة في وثائق Canvas: Overview of an LTI Launch <a name="launch-overview"></a> - Canvas LMS REST API Documentation

يوجد قسم “الإطلاق بدون ملفات تعريف الارتباط” (Launching without Cookies) أعتقد أنه ذو صلة هنا. لكنني لست متأكدًا بنسبة 100٪. أي مساعدة أو رؤى ستكون محل تقدير كبير.

تمكنت من تشغيل LTI في Canvas مع تحفظ واحد. إليك خطواتي:

  1. إنشاء مفتاح مطور في Canvas. لا يهم ما تضعه في JWK Method و Public JWK

  2. في إعدادات Discourse LTI، قم بتعبئة إعداداتك

  3. بالنسبة للمفتاح العام، يمكنك الانتقال إلى https://\u003cyour_canvas_url\u003e/api/lti/security/jwks و نسخ المفتاح الثاني. ثم يمكنك الذهاب إلى https://8gwifi.org/jwkconvertfunctions.jsp ولصقه هناك وتحويله. ثم انسخ النص بين -----BEGIN/END PUBLIC KEY----- والصقه في Lti platform public key في إعدادات Discourse LTI. ثم احفظ.

هذا هو التحفظ. تتغير مفاتيح JWK التي ينشئها Canvas، على ما يبدو شهريًا. بمجرد تغيير هذا المفتاح الثاني، سيتعطل LTI وستحتاج إلى استبداله بواحد جديد باتباع الخطوة 3.

سيتعين على إضافة Discourse LTI دعم عنوان URL عام لـ JWK لكي تظل محدثة.

إعجابَين (2)

هل يمكنني دمج عدة أنظمة لإدارة التعلم (LMS) مع منصة ديسكورس (Discourse) واحدة؟

:partying_face: هذه الإضافة مضمنة الآن مع نواة Discourse كجزء من Bundling more popular plugins with Discourse core. إذا كنت تستضيف بنفسك وتستخدم الإضافة، فأنت بحاجة إلى إزالتها من app.yml قبل الترقية التالية.

إعجاب واحد (1)