既にログインしているユーザーがSSO経由で認証したり、プライベートグループに直接アクセスしたりできるDiscourseへのリンクを追加

WordPressサイトがDiscourseのSSOプロバイダーとなっており、WPDiscourseプラグインを使用しています。フォーラムは公開されていますが、いくつかのプライベートグループがあります。

WordPressサイトからDiscourseのプライベートグループへユーザーを誘導するボタンを追加したい場合、こちらで説明されているようにSSO URLを使用しています。これにより、ユーザーは「おっと!そのページは存在しないか、非公開です。」という画面に遷移しません。

しかし、ユーザーがDiscourseでSSO経由で認証済みの場合、同じボタンを再度クリックすると、ログイン時に「ログインしたままにする」チェックボックスを選択していても、再度ログインページが表示されます。理想的には、Discourse SSOで認証されたユーザーは、プライベートグループに自由にアクセスできるべきです。

より良い設定方法はありますか?

WPログインページにコードを追加し、ユーザーが既にDiscourseにログインしているかを確認し、もしそうであればURLの「return_path」引数にあるページにリダイレクトすることを考えました。これは回避策になりますか?もしそうであれば、それを実現するためにどのような関数やAPI呼び出しを使用できますか?

ありがとうございます!

「いいね!」 1

ユーザーが既にWordPressサイトにログインしている場合、これは発生しないはずです。この問題が発生しているユーザーがWordPressにログインしているかどうかを明確にしていただけますか?もしログインしている場合、return_path引数で設定したDiscourseのURLにサイレントリダイレクトされることが期待されます。

「いいね!」 3

Hey @rodrigo.braga :slight_smile:

私も少し混乱しています。以下の点を確認していただけますでしょうか。

セットアップ

Wordpress は、こちらの手順に従って Discourse の DiscourseConnect プロバイダーとして設定されています。

シナリオ 1

  1. ユーザーは Wordpress サイトにアクセスし、Wordpress にログインしていません。
  2. ユーザーは Wordpress 上の https://discourse.example.com/session/sso?return_path=/g/private_group の形式のリンクをクリックします。
  3. ユーザーは Wordpress へのログインを求められます。
  4. ユーザーは Wordpress にログインします。
  5. ユーザーは https://discourse.example.com/g/private_group にリダイレクトされます。
  6. ユーザーは DiscourseConnect 経由で Discourse にログインしており、private_group のメンバーであるため、private_group を表示します。

これは現在、そうなっていますか?

シナリオ 2

  1. ユーザーは Wordpress サイトにアクセスし、Wordpress にログインしています。
  2. ユーザーは Wordpress 上の https://discourse.example.com/session/sso?return_path=/g/private_group の形式のリンクをクリックします。
  3. ユーザーは Wordpress へのログインを求められます。

これは現在、そうなっていますか?

「いいね!」 3

サイモンさん、ありがとうございます。はい、ユーザーはWordPressにログインしています。

私のシナリオで奇妙なのは、DiscourseConnectプロバイダーとしてWP Discourseを使用してDiscourseに接続しているメインのWordPressサイト(WPSite1)が1つあることです。

次に、WP Remote User Synch pluginを使用してユーザーデータベースをWPSite1と同期する2番目のWordPressサイト(WPSite2)があります。

しかし、私が言及した期待される動作に干渉する理由がわかりません。なぜなら、WPSite2にログインしてからWPSite1に移動すると、WPSite1にもすでにログインしているからです。

しかし、実際に起こっているのは、DiscourseConnectプロバイダーであるWPSite1にログインした後でも、https://discourse.example.com/session/sso?return_path=/g/private_groupのようなURLをクリックすると、SSO WPログインフォームに移動することです。

「いいね!」 1

アンガス様、

シナリオ2が該当します。
指示を確認しますが、SSOログインは機能するため、すべて正しく設定されていると考えています。問題は、ログインページがユーザーがすでに認証されていることを認識していないことです。

「いいね!」 1

@simonと@angus、改めてありがとう。問題がわかりました。

DiscourseConnectの設定を確認したところ、DiscourseConnectのURLがhttps://mydomain.orgに設定されていました。Discourse WPプラグインの推奨事項を確認したところ、https://www.mydomain.orgを使用するように記載されていました。wwwを追加して更新したところ、期待どおりに動作するようになりました。

ありがとうございました。

「いいね!」 2

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