Wir haben diese ROR-Anwendung, die omniauth-google-oauth2
mit devise
verwendet, um Benutzer anzumelden. Wir haben ein Problem, bei dem, wenn das Benutzerkonto gelöscht wurde, nachdem der Benutzer bereits Zugriff auf die Anwendung von seinem Google-Konto gewährt hat, die Authentifizierung einfach in einer endlosen Schleife von Authentifizierung stattfindet.
Das Szenario sieht wie folgt aus:
- Der Benutzer authentifiziert sich über Google und gewährt Zugriff für die Anwendung.
- Im Callback erkennt unsere Anwendung, ob das Benutzerkonto gültig ist - gelöscht oder nicht erstellt (unser System unterstützt keine Selbstregistrierung).
- Der Benutzer ist nicht autorisiert (und nicht angemeldet), was korrekt ist.
- Wenn der Benutzer erneut versucht, sich über Google anzumelden, um ein anderes Konto auszuprobieren, autorisiert Google transparent und leitet den Benutzer zurück zu unserer Anwendung, ohne dem Benutzer die Möglichkeit zu geben, die Konten zu wechseln.
Der Benutzer kann tatsächlich aus dieser Schleife herauskommen, indem er sich zuerst ausloggt. Aber das ist für den durchschnittlichen Benutzer nicht wirklich offensichtlich, so dass es keine ideale Lösung ist.
Idealerweise würde die Lösung darin bestehen, den access_token ungültig zu machen oder die Anwendungsberechtigung in der Callback-Phase zu widerrufen, so dass der Benutzer bei erneutem Versuch, sich anzumelden, die Konten wechseln kann.