Integração do Discourse com Sistema de Gestão de Aprendizagem (Autenticação LTI 1.3)

| | |
|:—|:—|:—|
| :discourse2: | Resumo | Discourse LTI permite que o Discourse se integre a vários sistemas de gestão de aprendizagem (LMS) por meio do padrão LTI 1.3.
| :open_book: | Guia de Instalação | Este plugin já vem incluído no núcleo do Discourse. Não há necessidade de instalá-lo separadamente.

Este plugin implementa o padrão LTI 1.3 para autenticação, que é suportado por diversos sistemas de gestão de aprendizagem. O Discourse atua como uma “Ferramenta” dentro do padrão LTI. Após a configuração, os usuários poderão clicar em um botão/link no sistema de gestão de aprendizagem e serão automaticamente logados no Discourse.

As instruções exatas de configuração variarão conforme o seu sistema de gestão de aprendizagem. Mas, de forma geral:

  1. Crie uma nova entrada de “Ferramenta” no seu sistema de gestão de aprendizagem
  • Versão do LTI: 1.3
  • URL de Inicialização: qualquer URL do seu site. Os usuários serão redirecionados para lá após o login
  • URL de Solicitação de Autenticação: https://<site-do-discourse>/auth/lti/initiate
  • URL de Redirecionamento: https://<site-do-discourse>/auth/lti/callback
  • Chave Pública da Ferramenta: deixe em branco. O Discourse nunca envia dados para o LMS
  1. No seu LMS, localize o “endpoint de autorização”, “ID do cliente da ferramenta”, “ID do emissor da plataforma” e a “Chave Pública da Plataforma”, e adicione-os às configurações do site relevantes no Discourse. No Discourse, essas configurações podem ser encontradas pesquisando por lti na interface de configurações do site.

  2. Se o seu sistema de gestão de aprendizagem garante que os e-mails dos usuários foram validados, ative a configuração do site lti email verified. :warning: Aviso: Se o seu LMS não verificar e-mails, ativar lti email verified representa um risco de segurança.

  3. Ative a configuração do site lti enabled

Se estas instruções não fizerem sentido para o seu LMS, por favor, poste no tópico abaixo e faremos o possível para atualizar as instruções conforme necessário.

E se o meu site exigir convite (invite_required)?

Se você deseja que seus usuários passem pelo fluxo de resgate de convites do Discourse ao fazerem o primeiro login, você pode usar “Propriedades Personalizadas” do LTI para especificar um link de convite do Discourse. Novos usuários serão redirecionados para o convite, enquanto usuários existentes serão enviados para a URL de inicialização regular. Por exemplo:

Nome da Propriedade Valor da Propriedade
discourse_invite_link https://discourse.exemplo.com/invites/abcdefg

Perguntas Frequentes

O plugin suporta integração com múltiplos sistemas LMS ao mesmo tempo?

  • O plugin suporta apenas um LMS conectado a um site por vez. A configuração do site LTI client IDs aceita múltiplos valores, mas isso ocorre porque alguns sistemas LMS definem um ID do cliente por curso.
23 curtidas

Você tem instruções específicas para integrar a integração LTI com o Canvas LMS?

1 curtida

Você precisará que seus administradores realizem a integração

Sou um dos nossos administradores e também um engenheiro de software. Acho que o problema que estou tendo tem a ver com cookies e o “estado” entre o Discourse e o Canvas não estarem correspondendo.

Este é o erro que estou recebendo nos logs do Discourse:

(lti) Falha na autenticação! state_mismatch: StandardError, O parâmetro State não correspondeu à sessão

Acho que esse erro está sendo gerado daqui: discourse-lti/lib/discourse_lti/lti_omniauth_strategy.rb at main · discourse/discourse-lti · GitHub

Alguma ideia ou algo que eu possa investigar para ajudar a depurar isso? Nesta página na Documentação do Canvas: Overview of an LTI Launch <a name="launch-overview"></a> - Canvas LMS REST API Documentation

Há uma seção “Launching without Cookies” que acho que é relevante aqui. Mas não tenho 100% de certeza. Qualquer ajuda ou insight seria muito apreciado.

Consegui fazer o LTI funcionar no Canvas com uma ressalva. Aqui estão meus passos:

  1. Crie uma Chave de Desenvolvedor no Canvas. Não importa o que você coloque no Método JWK e JWK Público

  2. Nas configurações do LTI do Discourse, preencha suas configurações

  3. Para a chave pública, você pode navegar até https://\u003cyour_canvas_url\u003e/api/lti/security/jwks e copiar a segunda chave. Em seguida, você pode ir para https://8gwifi.org/jwkconvertfunctions.jsp e colar lá e converter. Em seguida, copie o texto entre -----BEGIN/END PUBLIC KEY----- e cole isso na Chave pública da plataforma Lti nas configurações do LTI do Discourse. Em seguida, salve.

Aqui está a ressalva. Esses JWKs que o Canvas gera são rotacionados, aparentemente mensalmente. Assim que essa segunda chave mudar, o LTI quebrará e você precisará substituí-la pela nova, seguindo o Passo 3.

O plugin LTI do Discourse terá que suportar uma URL JWK Pública para se manter atualizado.

2 curtidas

Posso ter múltiplos LMSs integrados com um único Discourse?

:partying_face: Este plugin agora está incluído no core do Discourse como parte de Bundling more popular plugins with Discourse core. Se você auto-hospeda e usa o plugin, precisa removê-lo do seu app.yml antes da sua próxima atualização.

2 curtidas