SSO-Problem: Fehlende SSO- oder SIG-Parameter

Es scheint wahrscheinlich, dass etwas nicht richtig konfiguriert ist. Versuchen Sie vielleicht, einen Schritt zurückzutreten. Ich habe derzeit keine SSO-Anbieter-Website auf meinem lokalen System konfiguriert, aber das könnte Ihnen vielleicht weiterhelfen.

Stellen Sie auf Discourse sicher, dass die folgenden Einstellungen konfiguriert sind:

Die Einstellung discourse connect url sollte auf die URL gesetzt werden, die den von Ihnen geposteten Code verarbeitet.

Setzen Sie die Einstellung discourse connect secret auf eine Zeichenkette, die mindestens 10 Zeichen lang ist. Beachten Sie, dass Sie die 7 Zeichen lange Zeichenkette keyhere fest in den von Ihnen geposteten Code einprogrammiert haben. Ich gehe davon aus, dass Sie diesen Wert ändern, wenn Sie den Code ausführen. Setzen Sie ihn auf denselben Wert, den Sie in Discourse eingegeben haben.

Melden Sie sich nun von Ihrer Discourse-Website ab. Öffnen Sie die Web-Inspektor-Registerkarte “Netzwerk” Ihres Browsers. Klicken Sie auf die Schaltfläche “Anmelden” auf Discourse. Sie sollten Anfragen sehen, die den ersten beiden Anfragen aus dem folgenden Screenshot ähneln:

Die erste Anfrage geht an http://forum.example.com/session/sso?return_path=%2F

Die nächste Anfrage sollte an https://example.com/?sso=<sso_payload_sent_from_discourse>&sig=<sso_signature> gehen.

example.com und forum.example.com sollten auf die tatsächlichen Domains gesetzt werden, die Sie verwenden.

Wenn alles richtig konfiguriert ist, würde ich erwarten, dass die Werte der Parameter sso und sig den Variablen zugewiesen werden, die Sie hier festgelegt haben:

$sso = $_GET['sso'];
$sig = $_GET['sig'];

Wenn ich Sie wäre, würde ich wahrscheinlich den Rest des Codes auskommentieren und nur bestätigen, dass Sie die Nutzlast empfangen und den Variablen zuweisen können.

Wenn DiscourseConnect aktiviert ist, können Sie sich wieder bei Ihrer Discourse-Website anmelden, indem Sie die Route /u/admin-login aufrufen. Wenn Sie Zugriff auf die Rails-Konsole der Discourse-Website haben, können Sie sich auch anmelden, indem Sie DiscourseConnect von der Rails-Konsole aus deaktivieren:

SiteSetting.enable_discourse_connect = false

Es ist möglich, dass es weiter unten im von Ihnen geposteten Code Fehler gibt. Zum Beispiel glaube ich, dass Sie urldecode auf den Wert des sso-Parameters anwenden müssen, bevor Sie die erwartete Signatur generieren. Schauen Sie sich an, wie das WP Discourse-Plugin damit umgeht:

$payload in der obigen Funktion ist nur der Wert des sso-Query-Parameters, nachdem er hier bereinigt wurde: wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub.

1 „Gefällt mir“