Discourse学習管理システム統合(LTI 1.3認証)

:discourse2: 概要 Discourse LTI を使用すると、LTI 1.3 規格を通じて、Discourse を多数のラーニングマネジメントシステム(LMS)と統合できます。
:open_book: インストールガイド このプラグインは Discourse コアにバンドルされています。プラグインを別途インストールする必要はありません。

このプラグインは、多数のラーニングマネジメントシステムがサポートする認証用の LTI 1.3 規格を実装しています。Discourse は LTI 規格内において「ツール」として機能します。設定が完了すると、ユーザーはラーニングマネジメントシステム上のボタンまたはリンクをクリックするだけで、Discourse に即座にログインできます。

具体的なセットアップ手順は、使用しているラーニングマネジメントシステムによって異なります。ただし、一般的には以下の手順になります:

  1. ラーニングマネジメントシステムに新しい「ツール」エントリを作成します
  • LTI バージョン: 1.3
  • ランチ URL: サイト内の任意の URL。ユーザーはログイン後にここにリダイレクトされます
  • 認証リクエスト URL: https://<your-discourse-site>/auth/lti/initiate
  • リダイレクト URL: https://<your-discourse-site>/auth/lti/callback
  • ツール公開鍵 - 空白のままにします。Discourse は LMS にデータを送信しません
  1. LMS で「Authorization endpoint」、「Tool Client ID」、「Platform Issuer ID」、および「Platform Public Key」を見つけ、Discourse の関連するサイト設定に追加します。Discourse では、サイト設定 UI で lti を検索することで設定を見つけることができます。

  2. ラーニングマネジメントシステムでユーザーのメールアドレスが検証済みであることを保証している場合、lti email verified サイト設定を有効にします。:warning: 警告: LMS がメールを検証しない場合、lti email verified を有効にすることはセキュリティリスクとなります。

  3. lti enabled サイト設定を有効にします

これらの手順があなたの LMS に当てはまらない場合は、以下のトピックに投稿してください。可能な限り手順を更新させていただきます。

サイトが invite_required の場合はどうすればよいですか?

ユーザーが最初にログインする際に Discourse の招待状の受け取りフローを経由させたい場合、LTI の「カスタムプロパティ」を使用して Discourse の招待リンクを指定することができます。新規ユーザーは招待ページにリダイレクトされ、既存ユーザーは通常のランチ URL に送られます。例:

プロパティ名 プロパティ値
discourse_invite_link https://discourse.example.com/invites/abcdefg

よくある質問

このプラグインは、複数の LMS システムとの同時統合をサポートしていますか?

  • 現在、プラグインは 1 つのサイトに対して 1 つの LMS しか接続できません。LTI client IDs サイト設定では複数の値を受け入れることができますが、これは一部の LMS システムがコースごとにクライアント IDを割り当てるためです。
「いいね!」 23

Canvas LMSとのLTI連携を統合するための具体的な手順はありますか?

「いいね!」 1

統合を行うには、管理者に依頼する必要があります。

私は管理者であり、ソフトウェアエンジニアでもあります。この問題はクッキーと、Discourse と Canvas の間の「状態」が一致しないことに関連していると思います。

Discourse ログで表示されるエラーは次のとおりです。

(lti) 認証失敗! state_mismatch: StandardError, State パラメータがセッションと一致しませんでした。

このエラーは、ここからスローされていると思います: 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

ここには「クッキーなしでの起動」セクションがあり、これが関連していると思いますが、100% 確信はありません。どんな助けや洞察でも大歓迎です。

Canvas で LTI を動作させることができましたが、ただし注意点があります。手順は以下の通りです。\n\n1. Canvas で開発者キーを作成します。JWK メソッドと公開 JWK に何を入力しても構いません。\n

\n\n2. Discourse LTI 設定で、設定を入力します。\n\n\n3. 公開キーについては、https://\u003cyour_canvas_url\u003e/api/lti/security/jwks にアクセスし、2 番目のキーをコピーしてください。次に、https://8gwifi.org/jwkconvertfunctions.jsp にアクセスして貼り付け、変換します。その後、-----BEGIN/END PUBLIC KEY-----間にあるテキストをコピーし、Discourse LTI 設定の「Lti プラットフォーム公開キー」に貼り付けます。その後、保存します。\n\n注意点があります。Canvas が生成する JWK はローテーションされており、おそらく毎月変更されます。2 番目のキーが変更されると、LTI は機能しなくなり、手順 3 に従って新しいキーに置き換える必要があります。\n\nDiscourse LTI プラグインは、最新の状態を維持するために、公開 JWK URL をサポートする必要があります。

「いいね!」 2

単一のDiscourseに複数のLMSを統合できますか?

:partying_face: このプラグインは、Bundling more popular plugins with Discourse core の一部として、Discourse コアにバンドルされるようになりました。セルフホストでこのプラグインを使用している場合は、次回のアップグレード前に app.yml から削除する必要があります。

「いいね!」 3