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

| |
|:-|:-|:expressionless:
|:discourse2: | 概要 | Discourse LTI は、LTI 1.3 標準 を通じて、Discourse を多数の学習管理システム (LMS) と統合できるようにします。
:open_book: | インストールガイド | このプラグインは Discore コアにバンドルされています。別途プラグインをインストールする必要はありません。

このプラグインは、多数の学習管理システムでサポートされている 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
「いいね!」 22

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 から削除する必要があります。

「いいね!」 1