Die vom SSO-Anbieter übergebene external_id sollte sich niemals ändern. Wenn es möglich ist, solltest du vermeiden, die external_id-Werte deiner Benutzer zu ändern.
Solange du den SSO-Parameter require_activation nicht auf true setzt, kannst du alle SSO-Datensätze löschen, wie Jay erwähnt hat. Gehe dazu in die Konsole deiner Site und führe folgendes aus:
SingleSignOnRecord.destroy_all
Bevor du dies tust, musst du sicherstellen, dass du den Parameter require_activation im SSO-Payload nicht auf true setzt. Wenn dieser Parameter gesetzt ist, werden Benutzer beim nächsten Login auf der Site nicht anhand ihrer E-Mail-Adresse gefunden. Stattdessen erhalten sie einen Fehler, wenn sie versuchen, sich einzuloggen.
Wenn der Parameter require_activation nicht auf true gesetzt ist, werden Benutzer beim nächsten Login in Discourse anhand ihrer E-Mail-Adresse gefunden. Zu diesem Zeitpunkt wird ein neuer SSO-Datensatz für sie erstellt. Falls die E-Mail-Adressen irgendeines Benutzers zwischen deiner SSO-Anbieter-Site und Discourse nicht synchron sind, werden sie beim nächsten Login in Discourse auf Probleme stoßen. Einzelheiten zur Behebung dieser Probleme findest du hier: Debug and fixing common DiscourseConnect issues.
Wenn du den oben genannten Befehl ausführen möchtest, stelle sicher, dass du vor der Ausführung eine Sicherungskopie der Datenbank deiner Site erstellst. Falls etwas schiefgeht, kannst du die Sicherungsdatei wiederherstellen.