Discourse SSO с Wordpress работает только с URL /core/wp-admin

Я развернул новый плагин для WordPress, который использует SSO от Discourse, но столкнулся со странным багом, который проявляется только на боевом сайте.

На локальной машине я могу войти в систему и использовать параметр redirect_url, чтобы вернуться на страницу. Однако на боевом сайте SSO работает только в том случае, если redirect_url указывает на URL wp-admin, например:

SSO работает отлично…
https://www.example.com/core/wp-login.php?redirect_to=https%3A%2F%2Fwww.example.com%2Fcore%2Fwp-admin%2F&reauth=1

SSO не проходит успешную аутентификацию, просто возвращает на страницу входа/публикации
https://www.example.com/core/wp-login.php

Вам уже встречалась такая проблема? Есть ли идеи, куда стоит посмотреть? Если проблема сохранится, мне придется реализовать собственный механизм перенаправления для перехвата wp-admin.

Я вполне уверен, что здесь имеет место либо неправильно настроенный обратный прокси, либо что-то в этом роде. Не используете ли вы случайно Cloudflare?

Да, это Cloudflare. Есть ли в Cloudflare какие-либо настройки, которые мы можем протестировать?

Выключите оранжевое облако.

Ха-ха, это не моё решение, сайт использует Cloudflare в качестве основного кэша. Мне нужно будет провести исследование обратных прокси и посмотреть, можно ли настроить какие-либо параметры в CF.

Существует десятки тем о проблемах, вызванных оптимизациями Cloudflare. Вы можете использовать Cloudflare в качестве CDN, и тогда Discourse будет перенаправлять только те запросы, которые могут быть закэшированы через Cloudflare.

Вы также можете временно отключить эти оптимизации и посмотреть, решит ли это проблему.

Просто отключите «производительность» и «Rocket Loader» Cloudflare для Discourse через правила страниц — это, скорее всего, исправит проблему.

Да, это странное сочетание проблем, частично связанное, по-видимому, и с директорией установки WordPress. Пока я написал обходное решение, которое всегда перенаправляет на /core/wp-admin, а затем есть финальный параметр ?final_redirect_url, который перехватывает мой собственный хук и выполняет действия для возврата туда, куда нам нужно.

Похоже, вы используете WP Discourse – WordPress plugin | WordPress.org с включённой опцией «SSO Client» (Discourse выступает в роли провайдера SSO). Можете ли вы подтвердить, что это так?