Integrazione del sistema di gestione dell'apprendimento Discourse (Autenticazione LTI 1.3)

:discourse2: Riepilogo Discourse LTI consente a Discourse di integrarsi con numerosi sistemi di gestione dell’apprendimento (LMS) tramite lo standard LTI 1.3.
:open_book: Guida all’installazione Questo plugin è incluso nel nucleo di Discourse. Non è necessario installarlo separatamente.

Questo plugin implementa lo standard LTI 1.3 per l’autenticazione, che è supportato da numerosi sistemi di gestione dell’apprendimento. Discourse agisce come “Strumento” (Tool) all’interno dello standard LTI. Una volta configurato, gli utenti potranno fare clic su un pulsante/link nel sistema di gestione dell’apprendimento e accedere istantaneamente a Discourse.

Le istruzioni precise per la configurazione varieranno in base al tuo Sistema di Gestione dell’Apprendimento (LMS). In generale:

  1. Crea una nuova voce “Strumento” (Tool) nel tuo sistema di gestione dell’apprendimento
  • Versione LTI: 1.3
  • URL di avvio (Launch URL): qualsiasi URL del tuo sito. Gli utenti verranno reindirizzati qui dopo il login
  • URL della richiesta di autenticazione (Auth Request URL): https://<sito-discourse>/auth/lti/initiate
  • URL di reindirizzamento (Redirect URL): https://<sito-discourse>/auth/lti/callback
  • Chiave pubblica dello strumento (Tool Public Key): lascia vuoto. Discourse non invia mai dati al LMS
  1. Nel tuo LMS, trova l’“Endpoint di autorizzazione”, l’“ID Client Strumento”, l’“ID Emittente Piattaforma” e la “Chiave pubblica della piattaforma”, e aggiungili alle impostazioni del sito pertinenti in Discourse. In Discourse, le impostazioni possono essere trovate cercando lti nell’interfaccia delle impostazioni del sito.

  2. Se il tuo sistema di gestione dell’apprendimento garantisce che le email degli utenti siano state validate, abilita l’impostazione del sito lti email verified. :warning: Attenzione: Se il tuo LMS non verifica le email, abilitare lti email verified costituisce un rischio per la sicurezza.

  3. Attiva l’impostazione del sito lti enabled

Se queste istruzioni non hanno senso per il tuo LMS, pubblicare nel topic sottostante e faremo del nostro meglio per aggiornare le istruzioni di conseguenza.

Cosa succede se il mio sito richiede un invito (invite_required)?

Se desideri che gli utenti passino attraverso il flusso di riscatto dell’invito di Discourse al primo accesso, puoi utilizzare le “Proprietà personalizzate” (Custom Properties) di LTI per specificare un link di invito di Discourse. Gli utenti nuovi verranno reindirizzati all’invito, mentre gli utenti esistenti verranno inviati all’URL di avvio regolare. Ad esempio:

Nome Proprietà Valore Proprietà
discourse_invite_link https://discourse.example.com/invites/abcdefg

Domande frequenti (FAQ)

Il plugin supporta l’integrazione con più sistemi LMS contemporaneamente?

  • Al momento il plugin supporta solo un LMS connesso a un sito. L’impostazione del sito LTI client IDs accetta più valori, ma il motivo è che alcuni sistemi LMS impostano un client ID per ogni corso.
23 Mi Piace

Hai istruzioni specifiche per l’integrazione LTI con Canvas LMS?

1 Mi Piace

Avrai bisogno che i tuoi amministratori eseguano l’integrazione

Sono uno degli amministratori e anche un ingegnere del software. Penso che il problema che sto riscontrando abbia a che fare con i cookie e con lo “stato” tra Discourse e Canvas che non corrispondono.

Questo è l’errore che sto ricevendo nei log di Discourse:

(lti) Authentication failure! state_mismatch: StandardError, State parameter did not match the session

Penso che quell’errore venga generato da qui: discourse-lti/lib/discourse_lti/lti_omniauth_strategy.rb at main · discourse/discourse-lti · GitHub

Avete qualche idea o qualcosa che posso approfondire per aiutare a risolvere questo problema? In questa pagina della documentazione di Canvas: Overview of an LTI Launch <a name="launch-overview"></a> - Canvas LMS REST API Documentation

C’è una sezione “Launching without Cookies” che penso sia pertinente qui. Ma non ne sono sicuro al 100%. Qualsiasi aiuto o suggerimento sarebbe molto apprezzato.

Sono riuscito a far funzionare l’LTI in Canvas con un’unica avvertenza. Ecco i miei passaggi:

  1. Crea una chiave sviluppatore in Canvas. Non importa cosa inserisci nel Metodo JWK e JWK pubblico

  2. Nelle impostazioni LTI di Discourse, compila le tue impostazioni

  3. Per la chiave pubblica, puoi navigare su https://\u003cyour_canvas_url\u003e/api/lti/security/jwks e copiare la seconda chiave. Quindi puoi andare su https://8gwifi.org/jwkconvertfunctions.jsp e incollarla lì e convertirla. Quindi copia il testo tra -----BEGIN/END PUBLIC KEY----- e incollalo nella Chiave pubblica della piattaforma Lti nelle impostazioni LTI di Discourse. Quindi salva.

Ecco l’avvertenza. Quei JWK che Canvas genera vengono ruotati, apparentemente mensilmente. Una volta che quella seconda chiave cambia, l’LTI si interromperà e dovrai sostituirla con quella nuova seguendo il Passaggio 3.

Il plugin LTI di Discourse dovrà supportare un URL JWK pubblico affinché rimanga aggiornato.

2 Mi Piace

Posso avere pi[u00f9] LMS integrati con un singolo Discourse?

:partying_face: Questo plugin è ora incluso nel core di Discourse come parte di Bundling more popular plugins with Discourse core. Se stai auto-ospitando e utilizzi il plugin, devi rimuoverlo dal tuo app.yml prima del tuo prossimo aggiornamento.

3 Mi Piace