Integração do Discourse Learning Management System (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 é necessário instalá-lo separadamente.

Este plugin implementa o padrão LTI 1.3 para autenticação, que é suportado por vários 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 logados instantaneamente no Discourse.

As instruções exatas de configuração variarão dependendo do seu Sistema de Gestão de Aprendizagem. Mas, em geral:

  1. Crie uma nova entrada de “Ferramenta” no seu sistema de gestão de aprendizagem
  • Versão 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 da Solicitação de Autenticação: https://<seu-site-discourse>/auth/lti/initiate
  • URL de Redirecionamento: https://<seu-site-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, as 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 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 exigir convite?

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.example.com/invites/abcdefg
22 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.

1 curtida