Anmeldefehler

Hallo zusammen! Einer meiner Forenbenutzer konnte sich von unserer Website aus nicht mit seinem Konto im Forum anmelden und erhielt diese Fehlermeldung. Bei anderen Benutzerkonten gibt es keine Probleme, nur bei seinem. Ich dachte, es könnte vielleicht durch ein Update des Forums auf die neueste Version gelöst werden, aber das Problem besteht weiterhin.
Haben Sie eine Idee? Ich schätze jede Hilfe.

2 „Gefällt mir“

Gibt es etwas Besonderes an Ihrem Anmeldeverfahren oder an diesem Benutzer im Besonderen? Ich glaube, ich habe zuvor ähnliche Fehler bezüglich Administratorkonten gesehen, aber je mehr Informationen Sie geben können, desto besser. :+1:

Sehen Sie Fehler in Ihren /logs?

2 „Gefällt mir“

Vielen Dank für Ihre Antwort!
Meinen Sie die Protokolle unter /var/discourse/shared/standalone/log/rails?

In welchem Protokoll wird ein solcher Fehler aufgezeichnet?
production.log oder production_errors.log

Das zweite ist leer.

1 „Gefällt mir“

Ich meinte die Logs unter [YourSite]/logs, oder möglicherweise, ob etwas in der Browserkonsole angezeigt wird, wenn sie versuchen, sich anzumelden? Dort könnten zusätzliche Details enthalten sein, die helfen könnten, das Problem einzugrenzen.

Sind sie ein Nicht-Mitarbeiter-Benutzer, und haben Sie SSO aktiviert?

1 „Gefällt mir“

Ja, ich schätze, alle Benutzer können sich mit SSO anmelden, da sie ihr Konto und Passwort nicht erneut eingeben müssen, um sich im Forum anzumelden. Sie werden direkt von der Website zum Forum weitergeleitet.

Dies ist ein Fehler in der Konsole:

Und dies ist ein möglicher Fehlerprotokoll im Web:
ActiveRecord::RecordInvalid (Validierung fehlgeschlagen: Primäre E-Mail bereits übernommen) app/models/discourse_connect.rb:270:in block in match_email_or_create_user' lib/distributed_mutex.rb:53:in block in synchronize’ lib/distributed

2 „Gefällt mir“

Ich glaube, es scheint, dass dieser spezielle Benutzer eine andere E-Mail-Adresse in Discourse hat als auf Ihrer Hauptseite. Könnten Sie das überprüfen, um das zu bestätigen?

1 „Gefällt mir“

Ja, ich habe gerade die E-Mail im Discourse-Benutzerpanel und die E-Mail auf unserer Hauptseite überprüft, sie sind dieselben.

2 „Gefällt mir“

Ich habe mich umgesehen und ein möglicher Grund könnte sein, dass ihre E-Mail versehentlich auf Ihrer blockierten Liste gelandet ist. Sie können auf Ihrer Seite /admin/logs/screened_emails nachsehen, ob das der Fall ist. Wenn Sie sie dort finden, könnte das Aufheben der Blockierung das Problem beheben. :+1: (Es lohnt sich auch, ihre IP-Adresse unter /admin/logs/screened_ip_addresses zu überprüfen)

Wenn das nicht der Fall ist, ist eine andere Möglichkeit, dass sie ein Forum-Konto hatten, bevor Sie SSO aktiviert haben. Welches SSO verwenden Sie?

1 „Gefällt mir“

Ich habe /admin/logs/screened_ip_addresses überprüft und es ist leer.

Entschuldigung, ich verstehe nicht, was Sie meinen. („Welches SSO verwenden Sie?“) Gibt es viele Arten von SSO?

1 „Gefällt mir“

Ich habe mich gefragt, ob Sie Discourse Connect oder etwas anderes verwendet haben und womit Sie die Benutzerauthentifizierung bereitgestellt haben (z. B. WordPress).

Wir haben diesen Fehler bereits gesehen, ich habe gerade eine Suche in unserem Ticketsystem durchgeführt.

Dies tritt auf, wenn Sie Folgendes haben:

  • require activation auf true gesetzt ist
  • Ein Benutzer U1 in Discourse mit einer bestimmten E-Mail-Adresse, möglicherweise mit externer ID A.
  • Ein Benutzer U2 auf der DiscourseConnect-Provider-Seite mit derselben E-Mail-Adresse und einer anderen externen ID (B)

Der Benutzer meldet sich an, Discourse prüft, ob ein Benutzer mit der externen ID B existiert, dieser existiert nicht.
Normalerweise führt Discourse als nächsten Schritt eine Übereinstimmung anhand der E-Mail-Adresse durch, aber da require activation gesetzt ist, wird die E-Mail-Adresse als nicht vertrauenswürdig eingestuft und dieser Schritt wird übersprungen und nicht mit Benutzer U1 verknüpft, da dies Account-Hijacking ermöglichen würde.
Daher beschließt Discourse, einen neuen Benutzer zu erstellen. Dies schlägt fehl, da Benutzer U1 bereits mit dieser E-Mail-Adresse existiert.

Es wäre gut, wenn es eine bessere Fehlermeldung gäbe, falls die E-Mail existiert, aber als nicht vertrauenswürdig eingestuft wird. Ich bin mir auch nicht sicher, warum eine generische Rails-Fehlermeldung angezeigt wird.

Lösungen:

  • Wenn Ihre E-Mail-Adressen auf der DiscourseConnect-Provider-Seite verifiziert und vertrauenswürdig sind, setzen Sie require activation auf false.
    oder
  • Ändern Sie die externe ID für Benutzer U1 auf B
    oder
  • Ändern Sie die E-Mail-Adresse für Benutzer U1 in etwas anderes

Hinzufügen des Textes „Die gewünschte Änderung wurde abgelehnt“, damit dieses Thema gefunden wird, wenn jemand nach diesem Fehler sucht.

7 „Gefällt mir“

Ja, wir verwenden Discourse Connect und es ist mit unserer Website verbunden.

Vielen Dank für Ihre ausführliche Antwort! Die E-Mail-Adressen auf unserer Website werden beim Einloggen des Benutzers verifiziert. Daher werde ich zuerst versuchen, das Problem mit Methode 1 zu beheben. In den Admin-Einstellungen habe ich jedoch nicht gefunden, wo sich „E-Mail-Aktivierung erforderlich“ befindet.

Es ist ein Parameter, der während des SSO-Prozesses zurückgegeben wird. Siehe Disable email verification for SSO - #4 by simon

Für Websites, die das WP Discourse-Plugin zur Authentifizierung verwenden, können Website-Administratoren auch E-Mail-Adressen für einzelne Benutzer auf der Einstellungsseite des Benutzers als verifiziert markieren:

Dies ist sicherer und einfacher, als die E-Mail-Verifizierung für alle Benutzer auf der Website zu deaktivieren.

Ich frage mich, wann das angefangen hat. Ich bin ziemlich sicher, dass das von Ihnen beschriebene Szenario früher diese Fehlermeldung generiert hat: „Es gibt ein Problem mit Ihrem Konto. Bitte kontaktieren Sie den Administrator der Website.“

Hier ist ein weiterer Fall eines fehlerhaften Rails-Validierers, der diesen Fehler zurückgibt, und er ist 6,5 Jahre alt. Im Kontext von DiscourseConnect ist dies tatsächlich etwas, das wir erst in den letzten Monaten gesehen haben.

1 „Gefällt mir“

Wir verwenden das Discourse-Image, also sollten wir einfach require_activation=true in env: hinzufügen?

Vielen Dank für Ihre Hilfe, aber wir verwenden WP nicht. Wir verwenden das Discourse Docker-Image. Der richtige Weg, es zu konfigurieren, ist, require_activation=true in env: der Datei app.yml hinzuzufügen?

Nein, siehe Login error - #17 by RGJ, wie bereits gepostet, müssen Sie diesen Parameter pro Benutzer übergeben. Dies erfordert eine Änderung Ihres serverseitigen Codes, falls es sich um eine benutzerdefinierte Implementierung handelt.

1 „Gefällt mir“