Konfigurieren Sie Single Sign-On (SSO) mit WP Discourse und DiscourseConnect

Das WP Discourse-Plugin ermöglicht die Einrichtung von DiscourseConnect in WordPress, sodass Ihre Benutzer ihr WordPress-Konto zur Anmeldung bei Discourse oder ihr Discourse-Konto zur Anmeldung bei WordPress nutzen können. Bevor Sie DiscourseConnect einrichten können, müssen Sie zunächst das WP Discourse-Plugin in WordPress installieren und mit Ihrem Discourse verbinden. Wenn Sie bereit sind zu beginnen, schauen Sie sich zunächst dieses kurze Video an oder folgen Sie den nachstehenden Anweisungen.

Nächster Schritt

Sobald Sie DiscourseConnect eingerichtet haben, möchten Sie möglicherweise die folgenden Themen durchgehen:


Anweisungen

Festlegen eines geheimen Schlüssels

Egal, ob Sie WP Discourse als DiscourseConnect-Anbieter oder -Client einrichten, Sie müssen einen geheimen Schlüssel festlegen. Gehen Sie zum Reiter „DiscourseConnect-geheimer Schlüssel“ und geben Sie einen Textstring ein (Zahlen, Buchstaben und Symbole sind erlaubt), der mindestens 10 Zeichen lang ist. Beachten Sie bei der Erstellung dieselben Regeln wie für ein starkes Passwort. Stellen Sie sicher, dass Sie ihn nach dem Festlegen speichern.

Öffnen Sie dann Ihre Discourse-Site-Einstellungen (im Admin-Bereich) und suchen Sie nach „discourse connect“. Eine der Einstellungen ganz oben lautet „discourse connect secret“. Fügen Sie dort den geheimen Schlüssel ein, den Sie in WP Discourse festgelegt haben, und klicken Sie auf das grüne Häkchen.

Anmelden bei Discourse mit WordPress (DiscourseConnect-Anbieter)

Stellen Sie sicher, dass Ihr WP Discourse mit Ihrem Discourse verbunden ist und Ihr geheimer Schlüssel festgelegt ist ( :point_up: ), bevor Sie diese Anweisungen befolgen.

Damit Ihre Benutzer sich mit ihren WordPress-Account-Daten bei Discourse anmelden können, müssen Sie WP Discourse als DiscourseConnect-Anbieter einrichten. Gehen Sie zum Reiter „DiscourseConnect-Anbieter“ in den WP Discourse-Einstellungen, aktivieren Sie das Kontrollkästchen „DiscourseConnect-Anbieter aktivieren“ und speichern Sie Ihre Einstellungen.

Gehen Sie anschließend zu Ihren Discourse-Site-Einstellungen und geben Sie „discourse connect“ in das Suchfeld ein, um alle Discourse-DiscourseConnect-Einstellungen anzuzeigen. Stellen Sie zunächst die „discourse connect url“ auf die URL Ihrer WordPress-Site ein. Der letzte Schritt besteht darin, „enable discourse connect“ zu aktivieren. Stellen Sie sicher, dass Sie bereit sind, bevor Sie dies auswählen, da Ihre Benutzer nach der Aktivierung nur noch über WordPress bei Discourse anmelden können.

Sobald Sie Discourse Connect in Discourse aktiviert haben, öffnen Sie zum Testen der korrekten Einrichtung ein Inkognito-Fenster in Ihrem Browser. Lassen Sie Ihr normales (nicht-Inkognito-)Browserfenster mit einem Admin-Konto angemeldet (falls etwas schiefgeht und Sie die Einstellungen zurücksetzen müssen). Im Inkognito-Fenster werden Sie feststellen, dass der Discourse-Button „Registrieren“ nicht mehr angezeigt wird. Klicken Sie auf den Button „Anmelden“. Sie sollten einen WordPress-Anmeldebildschirm sehen. Geben Sie Ihre WordPress-Anmeldedaten ein, um sich anzumelden. Anschließend sollten Sie zurück zu Discourse weitergeleitet und angemeldet werden.

Falls etwas schiefgeht oder Sie feststellen, dass etwas nicht ganz richtig ist, kehren Sie zu Ihrem normalen Browserfenster zurück und deaktivieren Sie „enable discourse connect“, damit Ihre Benutzer sich normal bei Discourse anmelden können. Falls Sie aus irgendeinem Grund nicht mehr in Ihrem normalen Browserfenster bei Ihrem Admin-Konto angemeldet sind, lesen Sie den Abschnitt „DiscourseConnect über die Discourse-Konsole deaktivieren“ in der Fehlerbehebung unten, um wieder Zugriff auf Ihr Discourse zu erhalten.

E-Mail-Verifizierung

Discourse erwartet, dass alle E-Mail-Adressen von Benutzern verifiziert sind, während WordPress Benutzer nicht zur Verifizierung ihrer E-Mail-Adresse zwingt. Bei einer Standard-WordPress-Einrichtung ist es relativ einfach, die E-Mail-Adresse eines Benutzers während des Registrierungsprozesses zu verifizieren. Wenn jedoch eine Site ein Plugin verwendet, das ein Registrierungsformular auf der Vorderseite erstellt – beispielsweise das Registrierungsformular, das mit WooCommerce hinzugefügt werden kann –, kann das WP Discourse-Plugin die E-Mail-Adresse des Benutzers nicht verifizieren.

Wenn die E-Mail-Adressen in WordPress nicht verifiziert werden, müssen Benutzer vor der Anmeldung am Forum auf eine E-Mail-Verifizierungsmeldung von Discourse reagieren. Das Plugin verfügt über einige Filter, mit denen dieses Verhalten überschrieben werden kann. Schauen Sie sich den Code an, beginnend hier, für weitere Details.

Entfernen des require_activation-Flags

Wenn Sie sicher sind, dass WordPress E-Mail-Adressen authentifiziert, können Sie Discourse mitteilen, dass dies nicht erforderlich ist. Um das Flag require_activation vollständig zu entfernen, fügen Sie etwas wie Folgendes zu Ihrem WordPress hinzu (z. B. in der Datei functions.php Ihres Themes):

// Ersetzen Sie 'my_prefix' durch Ihr Site-Präfix.

add_filter( 'discourse_email_verification', 'my_prefix_discourse_email_verification' );
function my_prefix_discourse_email_verification( $require_activation ) {
    return false;
}

Um das Flag require_activation für bestimmte Benutzer zu entfernen, verwenden Sie etwas wie Folgendes:

// Ersetzen Sie 'my_prefix' durch Ihr Site-Präfix.

add_filter( 'discourse_email_verification', 'my_prefix_discourse_email_verification', 10, 2 );
function my_prefix_discourse_email_verification( $require_activation, $user_id ) {
    $user = get_userdata( $user_id );
    if ( /* einige Bedingung, die gegen $user geprüft wird */ ) {

        return true;
    }

    return false;
}

Userdata-Webhook

Dieser Webhook existiert aus historischen Gründen – das automatische Ausfüllen des Discourse-Namensfelds kann jetzt durch die DiscourseConnect-Anbieter-Option „Discourse-Benutzer bei Anmeldung erstellen oder synchronisieren“ erreicht werden.

Der Webhook „Benutzerdaten aktualisieren“ (im Einstellungsbereich „Webhooks“) kann verwendet werden, wenn WordPress der DiscourseConnect-Anbieter für Ihr Discourse ist. Der Webhook füllt automatisch das Discourse-Namensfeld des Benutzers in WordPress aus.

Erstellen eines DiscourseConnect-Anmeldelinks

Wenn Sie die DiscourseConnect-Anbieter-Option aktiviert haben, können Sie einen DiscourseConnect-Anmeldelink zu Ihrer WordPress-Site hinzufügen, indem Sie einen Link mit folgender Struktur erstellen:

<a href="https://discourse.example.com/session/sso?return_path=/">Community</a>

Setzen Sie den Wert von return_path auf die Seite in Ihrem Forum, auf der der Benutzer landen soll. Sie können einen SSO-Anmeldelink zu einem WordPress-Menü hinzufügen, indem Sie eine URL mit dieser Struktur als benutzerdefinierten Link im Bereich „Menüs“ des WordPress-Dashboards hinzufügen.

Anmelden bei WordPress mit Discourse (DiscourseConnect-Client)

Um Ihre Site als DiscourseConnect-Client für Discourse zu aktivieren, klicken Sie auf den Reiter „DiscourseConnect-Client“. Wählen Sie auf dieser Seite die Optionen „DiscourseConnect-Client aktivieren“ und „Anmeldelink hinzufügen“ aus.

Gehen Sie nun zu Ihrer Discourse-Admin-/Einstellungsseite und suchen Sie nach „discourse connect“, um alle DiscourseConnect-Optionen anzuzeigen.

  • Wählen Sie die Einstellung „DiscourseConnect-Anbieter aktivieren“ aus.
  • Kopieren Sie Ihren „DiscourseConnect-geheimen Schlüssel“ von WordPress in das Feld „secret“ der Discourse-Einstellung „discourse connect provider secrets“. Geben Sie im Feld „domain“ dieser Einstellung die Domain Ihrer WordPress-Site ein. Klicken Sie dann auf das grüne Häkchen, um Ihre Einstellungen zu speichern.

Nach Abschluss sollte die Einstellung „discourse connect provider secrets“ in Discourse wie folgt aussehen (mit der Domain, die auf Ihre WordPress-Domain eingestellt ist):

Discourse sollte nun als DiscourseConnect-Anbieter für Ihre WordPress-Site funktionieren.

Öffnen Sie Ihre WordPress-Site in einem Inkognito-Fenster in Ihrem Browser. Wenn Sie nun zur Anmeldeseite gehen, sollten Sie unter dem Anmeldeformular einen Link „Mit Discourse anmelden“ sehen. Klicken Sie darauf und Sie werden zum Discourse-Anmeldformular weitergeleitet. Melden Sie sich dort an und Sie werden zurück zur WordPress-Anmeldeseite weitergeleitet, mit einer Meldung, dass Sie Ihr Konto mit Discourse synchronisieren müssen. Befolgen Sie die Anweisungen in der Meldung, um Ihre Konten zu verknüpfen. Sie sollten nun in der Lage sein, sich über Discourse bei Ihrer WordPress-Site anzumelden.

Hinweis: Dieses Verhalten betrifft nur Benutzer, die sowohl bei WordPress als auch bei Discourse bereits Konten haben. Neue WordPress-Konten, die über Discourse-DiscourseConnect erstellt werden, können beim ersten Klicken auf den Link „Mit Discourse anmelden“ frei bei WordPress anmelden. Um Benutzern mit bestehenden Konten sowohl auf Ihrer WordPress-Site als auch auf Ihrem Discourse-Forum die Anmeldung über Discourse zu erleichtern, aktivieren Sie das Kontrollkästchen „Bestehende Benutzer per E-Mail synchronisieren“ auf dem Reiter „DiscourseConnect-Client-Optionen“.

Synchronisieren des Discourse-Abmeldens

Wenn DiscourseConnect aktiviert ist, kann die Abmeldung von Discourse mit Ihrer WordPress-Site synchronisiert werden, indem Sie die home_url Ihrer Site mit dem Abfrageparameter request=logout zur Discourse-Site-Einstellung „logout redirect“ hinzufügen. Die Einstellung befindet sich im Abschnitt „Benutzer“ der Discourse-Einstellungen unter /admin/site_settings/category/users. Hier ist ein Beispiel für eine „logout redirect“-URL:

http://example.com/?request=logout

Fehlerbehebung

Wenn Sie Probleme mit der Verwendung von WordPress als DiscourseConnect-Anbieter für Ihr Forum haben, sollten Sie zunächst Folgendes prüfen:

  • Ob die DiscourseConnect-geheimen Schlüssel, die in WordPress und Discourse festgelegt sind, identisch sind.
  • Ob Sie auf Ihrer WordPress-Site „DiscourseConnect-Anbieter aktivieren“ ausgewählt haben.
  • Ob Sie die korrekte „discourse connect url“ in Discourse eingegeben haben.

„Anmeldefehler“ bei Verwendung von DiscourseConnect

Wenn Benutzer beim Versuch, sich bei Discourse anzumelden, die Meldung „Anmeldefehler“ erhalten, lesen Sie bitte:

Debug and fixing common DiscourseConnect issues.

Deaktivieren von DiscourseConnect

Wenn DiscourseConnect nicht funktioniert, können Sie es deaktivieren, indem Sie die Site-Einstellung „enable discourse connect“ abschalten. Falls Sie nicht mehr bei einem Admin-Konto angemeldet sind, um es abzuschalten, machen Sie sich keine Sorgen: Es gibt mehrere Möglichkeiten, wieder Zugang zu erhalten und es abzuschalten.

Anmeldung über /users/admin-login

Öffnen Sie ein neues Browserfenster und geben Sie in die Adressleiste Ihre Forum-URL gefolgt von /users/admin-login ein, z. B.

https://community.mysite.com/users/admin-login

Sie sollten ein Eingabefeld sehen, das Sie nach Ihrer Admin-E-Mail fragt. Nach dem Absenden Ihrer E-Mail erhalten Sie eine E-Mail mit einem Link, mit dem Sie sich direkt bei Ihrem Admin-Konto anmelden können. Gehen Sie dann zu Ihren Site-Einstellungen und deaktivieren Sie „enable discourse connect“, um DiscourseConnect abzuschalten.

Falls dies aus irgendeinem Grund nicht funktioniert, machen Sie sich keine Sorgen: Sie können DiscourseConnect auch über die Konsole Ihres Servers deaktivieren (:point_down:)

Deaktivieren von DiscourseConnect über die Serverkonsole

Wenn Sie nicht wissen, was die Serverkonsole ist, oder keinen Zugriff darauf haben, wenden Sie sich an Ihren Hosting-Anbieter. Nachdem Sie per SSH auf Ihren Server zugreifen, lauten die auszuführenden Befehle wie folgt:

cd /var/discourse
./launcher enter app
rails c
SiteSetting.enable_discourse_connect=false
exit
exit
11 „Gefällt mir“

Was ist, wenn ich diese Optionen in meinem Discourse nicht habe? :confused:

Hallo @LosHunterros, willkommen bei Meta!

Discourse Connect ist nicht im grundlegenden Hosting-Plan enthalten
Screenshot_20240507_204846_Chrome

4 „Gefällt mir“

Danke für deine Antwort

1 „Gefällt mir“

Ich brauche jetzt wirklich 101er-Niveau. Oder ein einfaches Ja oder Nein.

Ich brauche einfachen Zugriff von WordPress auf mein Forum für diese Kunden. Da sie ein Konto in WordPress erstellt haben, würde ich es als Anbieter nutzen.

Aber ich habe jetzt Probleme mit der KI von Discourse. Ich habe verstanden, dass DiscourseConnect alle anderen Logins, wie Google, Microsoft und lokale, kapert. Aber die KI ist sich wirklich sehr sicher, dass das nicht stimmt, wenn ich discourse connect allowed redirect domains einstelle.

Nun, das habe ich getan. Und es wird immer noch ohne andere Login-Optionen zu WordPress umgeleitet.

Habe ich also zwei Stunden meines Lebens wegen der Halluzination einer KI verschwendet, oder habe ich etwas falsch gemacht? Denn wenn ich von Anfang an richtig lag und DiscourseConnect keine anderen Logins zulässt, nehme ich es sofort wieder weg. Ein Leben ohne Google-Login ist in dieser Ecke Europas keine Option.

Ihr erster Gedanke war richtig. Die KI liegt falsch: Siehe weiter.

Leider ja.

1 „Gefällt mir“

Ich habe die Einrichtungshilfe befolgt, bis zu dem Punkt, an dem SSO funktionieren sollte. Wenn ich meine Discourse-Seite in einem Inkognito-Fenster besuche, werde ich sofort auf meine WordPress-Startseite umgeleitet, mit einer langen Abfragezeichenfolge in der URL und ohne sichtbare Anmeldeoptionen.

Ist dies das erwartete Verhalten an dieser Stelle?
Muss ich jetzt nur noch die WordPress-Seite fertigstellen (Anmeldung/Registrierung usw.), oder habe ich etwas falsch konfiguriert?

Hallo Mike, willkommen. Sie sollten zur Standard-WordPress-Anmeldeseite weitergeleitet werden. Das Erste, was mir einfällt, ist, dass Ihr Theme (oder ein Plugin) eine benutzerdefinierte Anmeldeseite bereitstellt. Wie sieht Ihre Anmeldeseite normalerweise aus?

Hallo Angus, danke! :slight_smile:

Dies ist eine frische Installation von WordPress und Discourse, wobei das Twenty Twenty-Five-Theme aktiv ist. Ich habe deine Videoanweisungen Schritt für Schritt befolgt, aber wenn ich Discourse in einem Inkognito-Fenster aufrufe, werde ich auf die WordPress-Seite umgeleitet und lande auf der Startseite des Themes, nicht auf einem Anmeldebildschirm.

Die WordPress-Seite befindet sich derzeit hinter einem Verzeichnisschutz, da sie sich in einer Entwicklungsumgebung befindet – könnte das die Weiterleitung zur normalen Anmeldeseite beeinflussen?

Hallo Mike, hier ist ein kleines Video von mir, das ich gerade aufgenommen habe und das eine funktionierende Installation mit dem aktuellen Code zeigt.

Überprüfe einfach deine Einrichtung anhand dessen, was ich im Video zeige, und wenn du sicher bist, dass du es genauso eingerichtet hast und es immer noch nicht funktioniert, werden wir einen Prozess der schrittweisen Eingrenzung durchgehen, um herauszufinden, woran es liegt.

1 „Gefällt mir“

Hallo Angis,

Vielen Dank für das Video, großartige Unterstützung!

Ich habe Screenshots von jedem Abschnitt beigefügt (mit geschwärzten sensiblen Informationen)

image

image

image

Beim obigen Screenshot war dies tatsächlich nicht ausgewählt (ups), aber wenn ich das Forum in einem Inkognito-Browser besuche, werde ich jetzt automatisch auf /wp-login.php weitergeleitet – mir werden das Forum und der Anmelde-Button nicht angezeigt, wie bei dir.

image

Es macht mir nichts aus, dass es jetzt direkt zur wp-login-Seite weiterleitet, aber direkter Zugriff auf das Forum ist immer ein Bonus!

@angus Ich habe es herausgefunden… Während des anfänglichen „Was mache ich hier“, habe ich die Community mit diesem hier gesperrt;

image

Entschuldigung dafür, dass ich ein Ärgernis war, das ist der Startmodus :dashing_away:.

Nochmals vielen Dank für die großartige Unterstützung – ich komme sicher wieder.

2 „Gefällt mir“

Schön, dass du es herausgefunden hast!

Hallo Angus, ich frage mich, ob du mir bei diesem Problem helfen kannst, auf das ich gestoßen bin. Ich habe keine Antwort auf mein Thema erhalten:

Im Grunde, wenn ich einen Benutzer anonymisiere, erstellt das SSO-Plugin einfach ein neues Konto für ihn. Gibt es eine Möglichkeit, Benutzer einzeln zu deaktivieren, um zu verhindern, dass neue Konten für sie erstellt werden, und kann dies automatisch synchronisiert werden, wenn ich jemanden sperre oder anonymisiere?

Vielleicht den Benutzer anonymisieren und dann seine E-Mail-Adresse auf die SSO-E-Mail-Adresse setzen. Oder WordPress sollte dem Benutzer den Zugriff verweigern (das scheint die eigentliche Lösung zu sein – WordPress sollte dem Benutzer den Zugriff verweigern).

Wie verhindere ich, dass sich Benutzer über SSO bei WordPress anmelden? Das ist die Lösung, die ich denke.

Das ist eine WordPress-Frage. :wink:

Ich habe das Internet benutzt und es sieht so aus, als könnten Sie deren Rolle auf „keine Rolle auf dieser Website“ ändern.

Ich meinte, ich möchte, dass der Benutzer die Website weiterhin nutzen kann, aber kein Forumskonto erstellen kann.

Unser Forum ist von der Website getrennt, sodass einige Personen, die wegen störenden Verhaltens aus der Community ausgeschlossen wurden, die Website, bei der es sich um ein SaaS-Tool handelt, weiterhin nutzen können.

Dann müssen Sie sie im Diskurs sperren. Wenn Sie deren Inhalte anonymisieren müssen, müssen Sie dies tun und dann das Konto erstellen, das gesperrt wird.

Hallo @Shauny, ich habe auf deinen ursprünglichen Support-Beitrag geantwortet:

1 „Gefällt mir“