Konten automatisch mit externem SSO-Anbieter bereitstellen? (Aufforderung "Neues Konto erstellen" überspringen)

Ich habe gerade eine Discourse-Instanz eingerichtet und discourse-openid-connect hinzugefügt, um Keycloak als OIDC-Anbieter zu verbinden.

Nachdem ich die drei Bedingungen befolgt habe, die hier bei einem kürzlichen Update genannt werden, verhalte ich mich so, dass ich mich über Keycloak authentifizieren kann. Wenn ich bereits angemeldet bin, werde ich beim Klicken auf die Schaltfläche „Anmelden“ aufgefordert, ein „Neues Konto zu erstellen“, wobei die Felder automatisch mit den aus Keycloak stammenden Benutzerinformationen ausgefüllt sind.

Gibt es eine Möglichkeit, diesen zusätzlichen Schritt für den Benutzer zu überspringen? Diese Felder sind bereits natürlich aus Keycloak befüllt, sodass der Benutzer sie speziell für Discourse nicht ändern muss.

Die Kontoerstellung sollte implizit erfolgen, ähnlich wie es Grafana kann? Mein Ziel ist es, dass jeder von der Community bereitgestellte Dienst dieses nahtlose Erlebnis unterstützt, sodass das ursprüngliche Community-Konto, mit dem man sich angemeldet hat, das einzige ist, mit dem man sich befassen muss.

Das mag vielleicht keinen Sinn ergeben, wenn man an externe Authentifizierung wie Google, Facebook, GitHub usw. denkt. Ein Benutzer kann sein Community-Konto über Keycloak mit einem dieser Dienste registrieren, aber Keycloak selbst, das nur intern verwendet wird, soll mit allen einzelnen Diensten funktionieren. Daher sind implizite/automatisierte Zustimmung und Registrierung wünschenswert.

Neu bei Discourse: Mein SSO-OAuth2-Anbieter ist eingerichtet und funktioniert. Neue Benutzer sehen beim ersten Besuch und bei der Authentifizierung bei Discourse eine Aufforderung. Wie kann ich diesen Prozess optimieren und den Benutzer automatisch anlegen lassen? Die auf diesem Bildschirm angezeigten Werte sind korrekt und kommen nur einmal vor. Was kann ich tun, um diesen Bildschirm zu entfernen und den Kontoerstellungsprozess für meine Community-Benutzer zu vereinfachen?

Dies ist derzeit nicht möglich. Wenn Benutzer erstmals ein Konto erstellen, müssen sie auf der Anmeldemaske auf die Schaltfläche „Neues Konto erstellen

Ich habe seit meinem Beitrag hier nicht viel Zeit in das Thema investiert, aber ich habe mich letztlich für die Discourse-SSO-Funktion entschieden, um einen von mir entdeckten Bridging-Service für OpenID-Connect zu nutzen. Es handelte sich um einen Python-Dienst mit einem Docker-Container, was die Bereitstellung in meiner Docker-Compose-Umgebung erleichterte.

Keycloak stellte also bereits ein registriertes und angemeldetes Konto bereit. Beim Besuch von Discourse wurde der Benutzer dann mit den vom Bridge-Service bereitgestellten Details angemeldet (sofern ich mich richtig erinnere). Es ist schon eine Weile her, seit ich mich damit beschäftigt habe, aber das war meiner Erinnerung nach ein etwas besserer Prozess als die OAuth/OpenID-Connect-Unterstützung von Discourse (zumindest zu der Zeit; ich habe nicht geprüft, ob seither Verbesserungen vorgenommen wurden).

Wie auch immer: Die Synchronisierung der Benutzerdaten erfolgt nicht wie erwartet. Der Benutzer muss sich bei Discourse abmelden und wieder anmelden, damit eine Synchronisierung stattfindet. Und selbst dann gab es meiner Erinnerung nach einige Dinge, die vom SSO-Anbieter nicht an Discourse synchronisiert werden konnten (Gruppen/Rollen oder Ähnliches; da gab es meiner Erinnerung nach einige Fallstricke).

Um eine ordnungsgemäße Synchronisierung einzurichten, müssten Sie meiner Meinung nach erkennen, wenn Benutzerdaten beim Anbieter aktualisiert werden, und daraufhin die Aktualisierung von Discourse über dessen APIs auslösen. Andernfalls kann es zu doppelten oder nicht synchronisierten Daten kommen, was für die Benutzer verwirrend sein kann.


Also äh, falls die OAuth2-SSO-Integration, die Sie derzeit nutzen, nicht die Discourse-SSO-Funktion ist, die meiner Kenntnis nach generell einen SSO-Bridge erfordert, sondern diese Plugin-Alternative, sollte ein Wechsel zur Nicht-Plugin-Version mit einem SSO-Bridge das gewünschte Erlebnis liefern, sofern ich mich recht erinnere.

Ich bin auch daran interessiert, das Fenster „Neues Konto erstellen

Ich habe einige neue Seiteneinstellungen hinzugefügt, die dabei helfen werden. Um den Bildschirm ‘Neues Konto erstellen’ zu überspringen, aktivieren Sie sso_overrides_username, sso_overrides_email und sso_overrides_name.

Um das Popup vollständig zu überspringen, aktivieren Sie external_auth_skip_create_confirm.

Wenn Sie diese Option nicht sehen, stellen Sie sicher, dass Sie die neueste Version von tests-passed verwenden.

external_auth_skip_create_confirm ist aktiviert

Wir haben ein Problem:

  1. In unserem Discourse existiert bereits das Konto test__EMAIL__.
  2. Wenn ich mich mit OpenID und dem Benutzernamen test sowie der E-Mail-Adresse test__EMAIL__ anmelde, erscheint ein Fenster für ein neues Konto, das mich auffordert, einen neuen Benutzernamen (test1) und die E-Mail-Adresse test__EMAIL__ anzugeben.

Es gibt keine Möglichkeit, das alte Konto mit OpenID zu verknüpfen.

Verifiziert Ihr OpenID Connect-Anbieter die E-Mail-Adressen der Benutzer? Wir können die E-Mail aus OIDC nur dann ‘vertrauen’, wenn sie verifiziert wurde und das boolesche Feld ‘verified’ korrekt gesetzt ist.

Kein OID-Anbieter – Keycloak mit LDAP-Benutzer-Föderation
Wir haben die Lösung gefunden: Alte Benutzer können OpenID über die Benutzereinstellungen-Oberfläche verbinden.

@david wir haben 2.5.2 stable – diese Option fehlt…… Kann diese Option in den stable-Zweig übernommen werden? Wir brauchen sie, aber wir verwenden in der Produktion nichts anderes als den stable-Zweig…

Das ist leider nicht möglich, wir portieren keine neuen Funktionen auf den stabilen Zweig zurück. Behalte #releases im Auge, um zu erfahren, wann die nächste stabile Version veröffentlicht wird.

@david
Es ist nicht ganz klar, worum es bei der nächsten stabilen Version geht… Minor-Version 2.5.3? Oder Version 2.6.0?

Die nächste Hauptversion wird 2.6.0 sein. Minor-Versionen (2.5.x) werden nur für Sicherheitsupdates veröffentlicht.

@david
Danke! Jetzt ist es klar. Wird 2.6.0 dieses Jahr veröffentlicht oder nicht? )))

Wir haben noch kein bestätigtes Datum, aber ja, es besteht eine gute Chance, dass es noch in diesem Jahr sein wird :slight_smile: