1

Ich habe einen Google OAuth2-Login-Flow in meiner Web-Server-App implementiert (mit Python/Flask). Meine App leitet den Nutzer zu Google weiter, wo er sich mit Google-Anmeldedaten anmeldet und zu meiner App weitergeleitet wird.Wie melde ich Benutzer aus einer App heraus, die Google OAuth2-Anmeldung verwendet?

Ich habe Probleme zu entscheiden, wie die Logout-Funktion für diese App implementiert wird. Ich kann die Session-Cookies der App löschen, aber das protokolliert den Nutzer nicht von seiner Google A/C. Wenn der Benutzer nach dem Abmelden auf Login klickt, wird die Weiterleitung an Google weitergeleitet, und da der Nutzer weiterhin bei Google angemeldet ist, werden sie automatisch (ohne erneut zur Eingabe von Anmeldeinformationen aufgefordert zu werden) in meiner App angemeldet.

This SO answer here scheint einen guten Überblick darüber zu geben, warum seine schlechte Praxis den Benutzer zwingen, sich von allen Google-Diensten abzumelden. Wenn das der einzige Ausweg ist, werde ich es tun, aber ich nehme an, es gibt eine elegantere Lösung da draußen?

FWIW, "widerrufen" Google-Zugriffstokens funktioniert auch nicht. Meine App verwendet die Bereiche profile und email für OAuth2 (see this doc). Diese erfordern keine explizite Berechtigungserteilung durch den Benutzer. Es gibt also keine Möglichkeit, den Zugriff auf diese Bereiche zu widerrufen, sodass die Benutzer bei der Anmeldung erneut zur Eingabe aufgefordert werden.

Falls es hilft, habe ich mostly this doc verwendet, um die OAuth2-Flow-Funktionalität zu implementieren. Ich könnte meinen Code posten, aber (1) Es ist alles in diesem Artikel, und (2) Es sei denn, Sie sind unbekannt pump/oauth2, es sollte irrelevant sein, diese Frage zu beantworten, denke ich.

Alle Gedanken wären toll, danke.

+1

In OAuth Sie sich nicht die Menschen aus dem Autorisierungsserver (Google in Ihrem Fall). Wie, ob, wann und wie oft der Autorisierungsserver die Identität der Benutzer überprüft, ist eine eigene Entscheidung. Am Ende autorisierte er Ihre Bewerbung, nicht umgekehrt. Und zwar solange, bis der Nutzer das Token für Ihre App widerruft. Wenn Sie das Token auf Ihrer Seite ungültig machen, hat dies keine Auswirkungen auf den Vertrauensstatus des Benutzers auf dem Autorisierungsserver. –

+1

@KlausD. Das stimmt, und ich stimme dir zu. ** Gibt es also keine Lösung für mein Problem? ** (Anders als die unordentliche Sache, die am Ende dieses Artikels vorgeschlagen wurde (https://stackoverflow.com/questions/12909332/how-to-logout- of-a-application-wo-ich-benutze-oauth2-zu-Login-mit-google).) –

+0

Wie ist * Ihr * Problem schließlich? –

Antwort

0

Sie können den folgenden Link verwenden, um das Ihrer App zugewiesene Token zu widerrufen(). Dadurch wird der Nutzer von Ihrer App abgemeldet, aber er bleibt in Google angemeldet. Es wird auf demselben Link erwähnt, den Sie in Ihrem Beitrag oben erwähnt haben.

https://developers.google.com/identity/protocols/OAuth2WebServer#tokenrevoke

+0

Wenn Sie meine Frage richtig lesen, werden Sie sehen, dass ich erwähnt habe, warum revoke() nicht funktioniert, und warum ich _do need_ brauche, um den Benutzer aus Google zu unterschreiben, aber ich hoffe auf einen eleganten Weg dazu. –

Verwandte Themen