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

:discourse2: 概要 Discourse LTI を使用すると、Discourse は LTI 1.3 規格 を通じて、さまざまな学習管理システム (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(ツールクライアント ID)」「Platform Issuer ID(プラットフォーム発行者 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 つの 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 から削除する必要があります。

「いいね!」 2