SSO do Discourse com WordPress funciona apenas com a URL /core/wp-admin

Implantei um novo plugin do WordPress que depende do SSO do Discourse, mas encontrei um bug estranho que afeta apenas a implantação ao vivo do site.

No ambiente local, consigo fazer login e usar o parâmetro redirect_url para retornar à página. No entanto, no site ao vivo, o SSO só funciona se o redirect_url for a URL do wp-admin, por exemplo:

SSO funciona perfeitamente…
https://www.example.com/core/wp-login.php?redirect_to=https%3A%2F%2Fwww.example.com%2Fcore%2Fwp-admin%2F&reauth=1

SSO não autentica com sucesso, apenas retorna ao login/post
https://www.example.com/core/wp-login.php

Você já encontrou algo assim antes? Tem alguma ideia de onde procurar? Se persistir, terei que criar meu próprio mecanismo de redirecionamento para capturar o wp-admin.

Tenho bastante certeza de que há um proxy reverso mal configurado ou algo do tipo em jogo aqui. Você está usando o Cloudflare, por acaso?

Sim, é o Cloudflare. Existem configurações no Cloudflare que podemos testar?

Desligue a nuvem laranja.

Haha, essa não é minha decisão, o site usa o Cloudflare como cache principal. Vou precisar pesquisar sobre proxies reversos e ver se consigo ajustar alguma configuração no CF.

Existem dezenas de tópicos sobre problemas causados pelas otimizações da Cloudflare. Você poderia usar a Cloudflare como CDN, configurando o Discourse para redirecionar apenas o conteúdo que pode ser armazenado em cache pela Cloudflare.

Você também pode desativá-la temporariamente e verificar se isso resolve o problema.

Basta desativar o “desempenho” e o “rocket loader” do Cloudflare no Discourse por meio de regras de página, o que provavelmente resolverá o problema para você.

Sim, esta é uma mistura estranha de problemas, que parece ser parcialmente devido ao diretório de instalação do WP. Por enquanto, criei uma solução alternativa que sempre redireciona para /core/wp-admin; depois, há um ?final_redirect_url final que meu próprio hook captura e executa as ações para nos levar de volta ao local desejado.

Parece que você está usando WP Discourse – WordPress plugin | WordPress.org com a opção de Cliente SSO ativada (o Discourse é o provedor de SSO). Você pode confirmar que é esse o caso?