WordPress Multisite と複数の Discourse インスタンス

再構築プロジェクトの選択肢について、より明確に理解したいと考えています。フォーラムで調査を進めてきましたが、類似の質問は見つかったものの、元の投稿者のシナリオは ours とやや異なるため、新しいトピックとして作成しました。

現在、domain.com にある WordPress サイトを、community.domain.com にある Discourse インスタンスの SSO クライアントとして設定しています。しかし、WP サイトはマルチサイトネットワークとして再編成される予定です(例:sub1.newdomain.comsub2.newdomain.com など)。また、各サイトごとに別の Discourse インスタンスを配置する予定です(例:forum.sub1.newdomain.com、可能であればサブディレクトリ構成を整えて sub1.newdomain.com/forum が理想です)。

ユーザーがすべてのコミュニティ間で単一のアイデンティティを維持できるようにしたいと考えています。WP のサブサイトの一つで登録したユーザーをネットワーク全体で同期する方法は理解しています。1 つの Discourse インスタンスが別の Discourse インスタンスの SSO サーバーとして機能することは理解していますが、その設定方法や、複数の Discourse クライアントに対応するかどうかの確認が取れていません。

そこで、以下の質問があります:

  1. 上記のシナリオにおいて、auth.newdomain.com などの Discourse インスタンスを、WPMS ネットワークおよびサブサイトに関連付けられたすべての Discourse インスタンスの両方の SSO サーバーとして設定することは可能でしょうか?
  2. 前問の答えが「はい」の場合、その「サーバー」インスタンスを認証関連の機能のみを提供するように設定することは現実的でしょうか?つまり、どのサイトでの認証であっても、ネットワーク全体の認証の「真実の源泉(source of truth)」として機能するだけで、他の目的には使わないということです。あるいは、この時点で外部認証ソリューションに依存する方が適切でしょうか?
「いいね!」 2

こんにちは——あなたが元のトピックにリンクしたため、これが表示されました。@simon にもご意見を伺いますが、もしかしたらあなたには当てはまらないかもしれませんが(もっとシンプルな方法です)、単一の Discourse インスタンスを設定し、グループを使ってフォーラムを分離するという選択肢があります。SSO ペイロードにはグループ情報を送信できます。

ただし、SSO を提供する単一のフォーラムを持つ複数のフォーラムを持つことは、非常に straightforward です(以前試したことはありませんが)。手順は以下のようになると思います:

  1. WP Discourse プラグインを追加し、ネットワークオプションで SSO クライアントとして設定する
  2. SSO プロバイダーとして機能する Discourse フォーラムを設定する(WP と Discourse にシークレットキーを追加するなど)

その後、追加のフォーラムを追加する際は、それらも SSO クライアントとして設定されます(WP Discourse はネットワークレベルで設定されているため、新しいサイトを追加する際に設定を変更する必要はありません)。

何かお役に立てる部分があれば幸いです!

「いいね!」 2

@jakeols さん、ご提案を共有いただきありがとうございます。グループが一般的に提案される代替案であることは承知していますが、私たちの特定のユースケースには適していません。

@simon さんには、ここで何が可能で何が不可能なのかについて、いくつかの洞察を提供していただければ幸いです。

「いいね!」 1

Discourse と WordPress の統合、特にマルチサイト設定に関しては、最近の動向から少し取り残されています。詳細については、Pavilion is now maintaining and developing the WP Discourse plugin - #2 をご覧ください。

私がこの投稿を書いた後、状況に変化はないと思います:https://meta.discourse.org/t/discourse-as-sso-provider-for-wordpress-multisite/119617/2。ただし、その投稿に含まれる情報は、独立したトピックとしてまとめる必要があります。

マルチサイトネットワーク上で Discourse を SSO プロバイダーとして使用することは可能です。ただし、ネットワーク上のすべてのサイトに対して単一の Discourse サイトを SSO プロバイダーとして設定した場合にのみ有効になります。その理由は、マルチサイトネットワークではすべてのユーザーが単一のデータベーステーブルに格納されるためです。複数の Discourse サイトがネットワーク内の複数のサイトの SSO プロバイダーとして機能することを許可すると、WordPress に保存される Discourse ユーザー ID が一意であることを保証する簡単な方法が存在しません。

WP Discourse プラグインをマルチサイトネットワークにインストールすると、ネットワーク管理メニューに Discourse タブが追加されます。ネットワーク上のすべてのサイトに対して Discourse を SSO プロバイダーとして設定するには、ネットワーク管理ページに移動し、メニューから Discourse を選択してください。「マルチサイト設定を有効にする」オプションを選択し、接続設定を入力します。その後、ページを下にスクロールして SSO 設定セクションまで移動します。「SSO クライアントを有効にする」オプションを選択し、SSO シークレットキーを入力して設定ページを保存してください。

注意点として、マルチサイトネットワークで SSO クライアント機能を有効にすると、Discourse フォーラム上の任意のユーザーがネットワーク上の任意のサイトにアクセスできる可能性があります。

要するに、WordPress のマルチサイトネットワークに対して Discourse を SSO プロバイダーとして使用する際に、上記とは異なることを実現しようとしている場合は、ご自身で対応する必要があります。複数の Discourse サイトを WordPress ネットワーク内の個別のサイトの SSO プロバイダーとして機能させることは技術的には可能ですが、そのために必要な設定は過度に複雑になります。これは、WordPress プラグインに追加されることはまずないでしょう。

「いいね!」 1

ご返信いただき、誠にありがとうございます。引用された投稿は、私の最初の投稿で言及したものです。WordPress 側には特に問題はありません。ネットワークレベルで接続し、すべてのサブサイトでユーザーを同期する方法は把握しています。私がより理解したいのは、ある Discourse を別の Discourse の SSO サーバーとして設定する方法です。「auth」として機能する Discourse が同時に WordPress の SSO サーバーでもある状態で、このような設定が可能かどうかを明確にしたいと考えています。

Discourse 間の連携に関するドキュメントは見つかりませんでした。もし関連情報へのリンクをご教示いただくか、必要な手順を概説いただければ、大変感謝いたします。

「いいね!」 1

こんにちは、Gary さん。

ご意図はよくわかりますが、Discourse は認証目的のみで使用することを想定して設計されていません。複数の Discourse インスタンスや WordPress インスタンスに接続する専用の認証サービスを検討されることをお勧めします。今少し調査に時間を割くことで、将来的に大きなメリットが得られるでしょう。

比較的 straightforward(簡単)です。例えば、try.thepavilion.iotest.thepavilion.io のプロバイダーとして設定したい場合の手順は以下の通りです。

ステップ 1. try を SSO プロバイダーとして設定

ステップ 2. test を SSO クライアントとして設定

ただし、最も重要なアドバイスとして、ご提案の内容は複雑である点を強調しておきます。どの方法を選ばれるにせよ、本番環境と同等のステージング環境を用意し、公開前にさまざまな設定を実験する必要があります。このような構成は多くの異なる変数の影響を受けるため、抽象的な状態で具体的な助言を与えるのは困難です。

相互接続されたサーバーの網の目のために、完全に独立したステージング環境を構築するのは面倒に思えるかもしれません。しかし、そのために費やす労力よりも、こうしたものを公開した後に発生する予期せぬ問題を解決しようとする際の労力の方がはるかに大きくなります。

「いいね!」 4

アンガスさん、こんにちは!

はい、Discourse が純粋な認証サービスではないことは理解しています。現在、以下の 3 つの選択肢を検討しています。

  • Discourse をアイデンティティプロバイダーとして利用する
  • WordPress をアイデンティティプロバイダーとして利用する
  • 外部の(SaaS または自己ホスト型)アイデンティティプロバイダーを利用する

それぞれコスト、複雑さ、ユーザー体験(UX)に異なる影響を与えるため、その評価を行っており、そこで質問させていただきました。:slightly_smiling_face:

いいえ、おっしゃる通りです。確かに複雑であり、ステージング環境でのテストなしに本番環境にデプロイするなど考えられません。詳しいご説明をいただき、本当にありがとうございます!

「いいね!」 1

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.