SSO: Wordpress と Discourse をプロバイダーとしたログインフローとロジック

シモンさん、本当にありがとうございます!設定を手伝っていただき、ついに私の WordPress ページに「Discourse でログイン」が表示されるようになりました。これで、メンバーが WordPress にアクセスして支払いを行う際、よりスムーズになるよう、ロジックとログインフローを整理して理解する必要があります。

現在の私のサイトのサインインフローは以下の通りです。

WordPress でログイン > 「Discourse でログイン」を選択 > Discourse ログインページ > ログイン完了 > WordPress サイトへリダイレクト

この設定を変更したい場合、どのようにすればよいでしょうか?

  1. メンバーが WordPress で Discourse ログインを使ってログインし、WordPress へリダイレクトされる設定は既に完了しました。では、Discourse で Discourse ログインを使ってログインし、Discourse へリダイレクトされるが、バックエンドでは自動的に WordPress にもログインされるような設定は可能でしょうか?

  2. WordPress の元のログイン方法をすべて無効にし、Discourse ログイン方法のみを有効にしたいです。

以下のように、Discourse フォーラムにログインリンクを追加することができます。

<a href="http://example.com/?discourse_sso=1&redirect_to=http://discourse.example.com">WordPress にログインして Discourse へ戻す</a>

このリンクは WordPress サイトのベース URL を指す必要があります。URL には discourse_sso=1 というクエリパラメータを設定し、redirect_to パラメータにはユーザーをリダイレクトしたい URL を設定してください。

ユーザーを WordPress サイトまたは Discourse のいずれかにリダイレクトすることは可能です。多くの場合、Discourse ではなく WordPress サイトへリダイレクトする方が有用だと考えられます。例えば:

<a href="http://example.com/?discourse_sso=1&redirect_to=http://example.com/shop">Discourse の投稿から WordPress にログイン</a>

これは可能ですが、何か問題が起きた際に WordPress へのアクセスが遮断されないよう注意が必要です。考えられるアプローチの一つとして、WordPress の /wp-login.php ページを、WordPress サイトの管理者のみが知っているパスワードで保護する方法があります。