NextcloudからのSSOによるDiscourse

このガイドは見つかりませんでしたが、オープンソースの共同作業環境である Nextcloud の中に Discourse を「アプリ」として「統合」したいと考えています。これは、Discourse を iframe のような形で Nextcloud の「外部サイト」として開くことで実現できると考えています。以下が私の手順です。

  1. Nextcloud と Discourse 間で SSO を使用する「統合アプリ」が存在することに気づきました:
    Discourse SSO - Apps - App Store - Nextcloud

  2. Nextcloud で「+ アプリ」→「統合」→「Discourse SSO」へ移動し、これをインストールして有効にします。

  3. 自分の設定へ移動し、SSO 情報を入力します。

  4. Discourse フォーラムサイト(スウェーデン語です、申し訳ありません)へ移動し、管理設定を開きます。


    そして下にスクロールして、以下の 3 つのフィールドを入力します。

  5. Discourse と Nextcloud の両方からログアウトし、Nextcloud にログインします(Nextcloud と Discourse で同じメールアドレスを使用)。しかし、「外部サイト」を開いて Discourse フォーラムを表示させることができません。

なぜ Firefox は私のフォーラムを埋め込まれたものとして解釈するのでしょうか?

SSO の正しいエンドポイントを使用しているか確認してください。

次に、CSP がこの動作の原因となっているかどうかを確認してください(どのように、なぜそうなるのかはわかりません)。

SSO を無効にしてみましたが、フォーラムが配置されているサブドメインは Nextcloud 内でまだ開けません。ただし、通常のドメイン名は開くことができます。
ここで言う CSP とは、Discourse がホストされているクラウドサービスプロバイダーのことでしょうか?

Nextcloud より

ウェブブラウザやウェブサイトが HTTP および HTTPS URL を処理する方法は多岐にわたるため、また「外部サイト」アプリが外部リンクを IFrames に埋め込むため、リンクが正しく機能するかどうかは保証されません。

Discourse は <iframe> タグ内では動作せず、Discourse サーバーは接続を拒否します。

「いいね!」 3

ありがとうございます!それでは、統合が不可能なのに「SSO 統合」アプリが存在するのはなぜでしょうか?Discourse を iframe として埋め込むための回避策はありますか?

編集:現在、Nextcloud フォーラムに投稿しました。もしそこで明確な回答が得られれば、改めて報告します。

わかりました。Nextcloud フォーラムのユーザーは、Discourse が iframe で動作しないことから、問題が Discourse 側にあることを単に確認しているようです。しかし、簡単な Google 検索で、4 年前の以下の GitHub プロジェクトが見つかりました:

このプラグインに対応するように app.yml を編集した後、次に何をすべきでしょうか?完全にインストールするために Discourse を再構築する必要がありますか?

はい、プラグインをインストールするには再構築が必要です

参考までに、4 年以上メンテナンスされていないプラグインは、動作しなくなる可能性が非常に高いです。

「いいね!」 2

プロジェクトの GitHub で問題や機能リクエストを提出できます。ただし、バージョン 20 向けにはまだ更新されていません。詳細はクリックしてください。

「いいね!」 1

アドバイスありがとう!あなた自身はこのアプリを使ったことがないんでしょ?

念のため報告しますが、「allowifram」プラグインをインストールしたところ、Discourse が実際にクラッシュしました。:stuck_out_tongue:

ご興味のある方のために、Discourse を Nextcloud に統合する試みがあったかどうか開発者に尋ねてみました:Amend so that Discourse can be opened within Nextcloud? · Issue #18 · habi-dat/discoursesso · GitHub
開発者は「いいえ」と答えましたが、iframe の問題を回避するために以下のプラグインでハック的な解決策を講じたとのことです:GitHub - soudis/discourse-allow-same-origin · GitHub
まだ自分では試していません。

「いいね!」 2

返信が遅くなり申し訳ありません。最近、Nextcloud と Discourse の連携オプションを探っていましたが、もうすでにご解決いただいているかもしれませんね。もしよろしければ、情報交換させてください。現在も Discourse と Nextcloud を併用されていますか?もしそうであれば、どのような目的でどのような運用状況か、もう少し詳しく教えていただけますでしょうか。大変参考になります!

はい、ご存知の通り、Discourse は iframe 内で読み込まれることを好まない仕様です。これは昔から変わらない特性です。回避策としては、Discourse が提供する非常に柔軟なテーマシステムを活用し、メインサイトと一致するヘッダーを追加する方法があります。さらに、必要に応じて Nextcloud のテーマシステムを使って、それと合わせることも可能です。Nextcloud の「外部サイト」管理設定では、redirect オプションを選択してください。これにより、サイトは埋め込みを許可せず、Discourse へのリンクは iframe ではなく、同じブラウザタブで開かれるようになります。

Screen Shot 2021-05-05 at 3.58.30 PM

ご参照の Nextcloud discoursesso アプリ は、Nextcloud を通じて Discourse サイトへの認証を可能にするためのものです。設定は正しく行われているようです。Discourse の URL にアクセスしてログインを試みるだけで、Nextcloud の認証情報を使ってログインできることが確認できます。

なお、Discourse において「Discourse SSO」は「Discourse Connect」に名称変更されました。これを有効化すると、Discourse 上の他のすべてのログインオプションが完全に置き換えられてしまいますので、慎重に導入してください。

「いいね!」 3

このプラグインでうまくいきましたか?:eyes:

プラグインをインストールしましたが、まだ「Discourse の通知の取得に失敗しました」と表示されます。