Discourse SSO mit WordPress funktioniert nur mit der URL /core/wp-admin

Ich habe ein neues WordPress-Plugin bereitgestellt, das auf Discourses SSO basiert, aber ich habe einen seltsamen Fehler, der nur die Live-Bereitstellung der Website betrifft.

Lokal kann ich mich anmelden und den Parameter redirect_url verwenden, um zur Seite zurückzukehren. Auf der Live-Site funktioniert SSO jedoch nur, wenn redirect_to die wp-admin-URL ist, z. B.:

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

SSO authentifiziert nicht erfolgreich, es wird einfach zur Anmeldung/zum Beitrag zurückgekehrt
https://www.example.com/core/wp-login.php

Ist Ihnen das schon einmal begegnet? Haben Sie eine Idee, wo ich suchen sollte? Falls das Problem bestehen bleibt, muss ich einen eigenen Umleitungsmechanismus erstellen, der wp-admin abfängt.

Ich bin ziemlich sicher, dass hier entweder ein falsch konfigurierter Reverse-Proxy oder ähnliches im Spiel ist. Verwendest du zufällig Cloudflare?

Ja, es ist Cloudflare. Gibt es Einstellungen in Cloudflare, die wir testen können?

Schalte die orange Wolke aus.

Haha, das ist nicht meine Entscheidung, die Seite nutzt Cloudflare als primären Cache. Ich muss mich etwas mit Reverse-Proxies beschäftigen und schauen, ob ich einige Einstellungen in CF anpassen kann.

Es gibt Dutzende von Themen zu Problemen, die durch Cloudflares Optimierungen verursacht werden. Du könntest Cloudflare als CDN nutzen und dabei einstellen, dass Discourse nur Inhalte umleitet, die über Cloudflare zwischengespeichert werden können.

Du könntest es auch vorübergehend deaktivieren und prüfen, ob das Problem dadurch behoben wird.

Deaktivieren Sie einfach die Cloudflare-Optionen “Performance” und “Rocket Loader” für Discourse über Page Rules. Das sollte das Problem höchstwahrscheinlich für Sie beheben.

Ja, das ist eine seltsame Mischung von Problemen, die teilweise auch auf das Installationsverzeichnis von WP zurückzuführen zu sein scheint. Ich habe vorübergehend eine Workaround-Lösung erstellt, die immer auf /core/wp-admin weiterleitet. Anschließend wird ein ?final_redirect_url-Parameter hinzugefügt, den mein eigener Hook abfängt und auswertet, um uns dorthin zurückzubringen, wo wir sein sollen.

Es sieht so aus, als würdest du WP Discourse – WordPress plugin | WordPress.org mit der aktivierten SSO-Client-Option verwenden (Discourse ist der SSO-Anbieter). Kannst du bestätigen, dass dies der Fall ist?