TGP
(Brian)
2019 年 10 月 30 日午後 10:11
1
アドバイスがいただければ幸いです。
WP を SSO プロバイダーとして利用しています(WP 上の MemberPress で Discourse と LMS コンテンツへのアクセスを管理しています)。新規ユーザーのサインアップとログインは完璧に動作するのですが、ログアウトがうまくいきません。
?request=logout リダイレクトを追加したのですが、ログアウトページをリフレッシュすると、すぐにまたログイン状態に戻ってしまいます。
最初は WP を別のブラウザタブで開いていたことが原因かと思いましたが、WP からログアウトしてタブを閉じても、この動作は続きます。
もう一歩というところまで来ている気がします。どなたかトラブルシューティングのアドバイスをいただければ、この問題を解決できるかもしれません。
よろしくお願いいたします。
以下は、連続して 2 回ログアウトを試みた様子を示す GIF です。
以下は、WP 側の SSS 設定のスクリーンショットです。
そして、Discourse 側の設定です。
simon
2019 年 10 月 30 日午後 10:26
2
設定が正しく完了しているようです。これは通常の WordPress サイトですか、それともマルチサイト構成の一部ですか?ネットワーク内のメインサイト以外のサイトとのログアウト同期に問題がある可能性があります。\n\n画面録画を確認したところ、Discourse サイトが「ログイン必須」に設定されているようです。Discourse が SSO リクエストを伴って WordPress サイトへリダイレクトし、WordPress にまだログインしているため自動的にログインされるという現象が発生しています。本来の動作としては、ログアウトした状態で WordPress のログインページに到達するはずです。\n\nDiscourse でのログアウト同期は、WordPress の clear_auth_cookie フックに依存します。おそらく、他のプラグインがこれを干渉している可能性があります。
TGP
(Brian)
2019 年 10 月 30 日午後 10:48
3
ありがとう、サイモン。単一の WordPress サイトで、クッキーが妥当なように思えますね。その方面を調べてみます。
アドバイスありがとうございます!
brian driggs //// tgp
simon
2019 年 10 月 30 日午後 10:59
4
開発サイトをお持ちの場合は、WP Discourse 以外のすべてのプラグインを無効化して、問題が引き続き発生するか確認してください。開発サイトをお持ちでない場合は、Health Check プラグイン を使用して、ユーザーのセッション中にプラグインを無効化することも可能です。このプラグインを使ってセッション中にプラグインを無効化する方法の詳細については、こちらをご覧ください: Troubleshooting using the Health Check – Make WordPress Support
TGP
(Brian)
2019 年 10 月 31 日午後 4:23
5
バッチリです。開発用サイトは持っていませんが、ヘルスチェックプラグインは完璧に機能しました。しかも初回で成功です。MemberPress と auth_cookie の仕組みを掘り下げてみようと思います。ありがとう、サイモン。
参考までに、私が行った手順を記載します。同じように困っている方がいれば役立つかもしれません:
Health Check プラグインをインストールしました。
– サイトをトラブルシューティングモードに設定しました。
– WP-Discourse プラグインを有効化しました。
Discourse サイトを開きました。
– ログアウトしました。
– WordPress のログインページにリダイレクトされました(ログインフォームが表示されていませんでした)。
– Discourse に再ログインすることができませんでした(これが目的の動作です)。
MemberPress を有効化しました。
– ログインページが MemberPress によって生成されたユーザー名/パスワード入力欄を使用していることに気づきました。
– ログインフォームが再び表示されました。
Discourse サイトを開くと、すでにログイン状態でした。
ログアウトを試みましたが、ループを通じて Discourse にリダイレクトされ、まだログインしたままの状態でした。
2007 年から WordPress を使っていますが、このプラグインの名前は今回初めて聞きました。改めてありがとう、サイモン!
simon
2019 年 10 月 31 日午後 4:44
6
はい、トラブルシューティングには非常に役立ちます。
MemberPress の状況を確認したいのですが、有料プラグインです。ドキュメントを見ると、プラグインのオプションページで「MemberPress Logout Redirect URL」を設定できるようです。この設定が問題の原因かもしれません。
TGP
(Brian)
2019 年 10 月 31 日午後 4:56
7
どうお手伝いしましょうか?
ログアウト時のリダイレクト設定に気づき、いくつかのターゲットを設定しましたが、効果が現れていないようです。
Discourseを外部サイトからログアウトする方法を探しています。ドキュメントを探しましたが、この投稿 で言及されているように、API POSTリクエストを送信する方法のようです。
問題は、APIリクエストの作成方法があまり理解できず、次にどう進めればよいかがわからないことです。Postmanをダウンロードしてそこで実験を試みているのですが、うまくいきません。必要なAPIリクエストの作成方法がわからず、その後、外部サイトでどのように実装すればよいのかもわかりません。
この問題を解決するためのアドバイスはありますか?
simon
2019 年 11 月 14 日午後 9:45
9
外部サイトについてもう少し詳しく教えていただければ、ここで誰かがお手伝いできるかもしれません。
robtech
2019 年 11 月 14 日午後 10:07
10
当サイトは、MemberPress を使用した WordPress サイトであり、Discourse フォーラムの SSO プロバイダーとして機能しています。WordPress でログアウトした後に URL にリダイレクトできるため、その URL を使って同時に Discourse からもログアウトさせたいと考えています。あるいは、functions.php に追加できる PHP 関数を通じて API リクエストを送信することも可能でしょうか?
simon
2019 年 11 月 14 日午後 10:12
11
SSO には WP Discourse プラグインを使用していますか?もしそうであれば、WordPress からログアウトすると Discourse からもログアウトされるはずです。しかし、最近の報告によると、WordPress で Memberpress プラグインを使用している場合、この機能が動作しないとのことです:https://meta.discourse.org/t/sso-unable-to-logout/132283。同じ問題に直面していますか?
robtech
2019 年 11 月 14 日午後 10:23
12
はい、そのプラグインを使用していますが、同じ問題のようです。
robtech
2019 年 11 月 14 日午後 10:27
15
それはとても助かります!もし私からさらに情報が必要でしたら、お気軽にお知らせください。ありがとうございます!
simon
2019 年 11 月 14 日午後 11:40
16
問題の再現に少し困っています。どちらか片方の WordPress サイトでアカウントを作成できれば、何が起きているか確認できるかもしれません。管理者権限は必要ありません。可能であれば、サイトの詳細を PM で送ってください。
TGP
(Brian)
2019 年 11 月 15 日午前 3:47
17
@simon 会員登録を完了しました。パスワード設定のためのメールが届いているはずです。確認できますか?よろしくお願いします。
私のサイトにもアカウントを作成し、詳細をプライベートメッセージでお送りしました。
simon
2019 年 11 月 15 日午後 5:20
19
@TGP Discourse の「ログアウトリダイレクト」設定を https://www.thegearheadproject.com/?request=logout に変更してみてください。www を含まないリクエストが www 付きの URL にリダイレクトされているようですが、その際 request=logout クエリパラメータが保持されていないようです。
これで問題が解決するとは限りませんが、原因としてこれを除外することは重要です。
simon
2019 年 11 月 15 日午後 6:25
20
これらのサイトでのログアウト問題は無関係である可能性が高いようです。
@robtech さん、あなたの Discourse サイトからログアウトすると、あなたの WordPress サイトからもログアウトされます。したがって、ログアウト処理のこの部分はあなたのサイトで正しく機能しているようです。私が問題として発見しているのは、WordPress から Discourse へのログアウト同期です。WordPress サイトからログアウトしても、Discourse サイトからはログアウトされません。
WP Discourse 接続タブに設定されている API キーと公開ユーザー名が正しいか確認してください。管理者権限を持つ API キーとユーザー名を使用する必要があります。最も簡単な方法は、サイトのマスター API キーを使用し、公開ユーザー名に ‘system’ を指定することです。このページでオプションを保存すると、「Discourse に接続済み」という通知が表示されるはずです。WordPress のログアウト時に Discourse からもログアウトできるようにするため、このセクションでは管理者認証情報が必要です。
これで問題が解決しない場合は、お知らせください。