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

||||
-|-|
:discourse2: | Resumo | Discourse LTI permite que o Discourse se integre a diversos sistemas de gestão de aprendizagem (LMS) por meio do padrão LTI 1.3.
:open_book: | Guia de instalação | Este plugin vem embutido 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” (Tool) dentro do padrão LTI. Uma vez configurado, os usuários poderão clicar em um botão ou link no sistema de gestão de aprendizagem e serem automaticamente logados no Discourse.

As instruções exatas de configuração variarão com base no seu Sistema de Gestão de Aprendizagem (LMS). Mas, em geral:

  1. Crie uma nova entrada de “Ferramenta” (Tool) no seu sistema de gestão de aprendizagem:
  • Versão LTI: 1.3
  • URL de lançamento (Launch URL): qualquer URL do seu site. Os usuários serão redirecionados para aqui após o login.
  • URL de solicitação de autenticação (Auth Request URL): https://<site-do-discourse>/auth/lti/initiate
  • URL de redirecionamento (Redirect URL): https://<site-do-discourse>/auth/lti/callback
  • Chave pública da ferramenta (Tool Public Key): deixe em branco. O Discourse nunca envia dados para o LMS.
  1. No seu LMS, localize o “Endpoint de autorização” (Authorization endpoint), o “ID do cliente da ferramenta” (Tool Client ID), o “ID do emissor da plataforma” (Platform Issuer ID) e a “Chave pública da plataforma” (Platform Public Key), e adicione-os às configurações relevantes do site 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 garantir 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 os 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 nosso melhor para atualizar as instruções de acordo.

E se o meu site estiver como invite_required?

Se você quiser que seus usuários passem pelo fluxo de resgate de convite do Discourse na primeira vez que fizerem login, você pode usar as “Propriedades Personalizadas” (Custom Properties) do LTI para especificar um link de convite do Discourse. Os novos usuários serão direcionados para o convite, enquanto os usuários existentes serão enviados para a URL de lançamento regular. Por exemplo:

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

Perguntas Frequentes (FAQ)

O plugin suporta a integração com vários sistemas LMS ao mesmo tempo?

  • No momento, o plugin suporta apenas um LMS conectado a um site. A configuração do site LTI client IDs aceita múltiplos valores, mas isso ocorre porque alguns sistemas LMS definem um ID de 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.

3 curtidas