1

私はWebサーバーアプリでPython /フラスコを使ってGoogle OAuth2ログインフローを実装しました。私のアプリはユーザーをGoogleにリダイレクトして、Googleの資格情報でサインインして、自分のアプリに戻るよう指示します。Google OAuth2サインインを使用するアプリケーションからユーザーをログアウトするにはどうすればよいですか?

このアプリケーションのログアウト機能を実装する方法を決定する際に問題があります。アプリのセッションCookieをクリアすることはできますが、ユーザーはGoogleのa/cからログアウトしません。ユーザーがログアウトした後にログインすると、リダイレクトはGoogleに送られ、ユーザーはまだGoogleにログインしているため、ユーザーは自動的に(認証情報の再入力を求められなくても)、自分のアプリにサインインし直します。

This SO answer hereなぜその悪い練習すべてのGoogleサービスからログアウトするユーザーを強制的に良いの概要を与えるようです。それが唯一の方法だとすれば、私はそれをするつもりですが、そこにはより洗練されたソリューションがあると仮定していますか?

FWIW、Googleトークンの「取り消し」も機能しません。私のアプリは、profileemailのスコープをOAuth2(see this doc)に使用しています。これらは、ユーザーが明示的に「許可を許可」する必要はないため、ログイン時にユーザーに再度プロンプトを表示させるようなスコープへのアクセスを取り消すことはありません。

場合によっては、mostly this docを使用してOAuth2フロー機能を実装しました。私は自分のコードを投稿することができますが、(1)それはすべて記事にあります。(2)あなたがよく知らないフラスコ/ oauth2でない限り、私はこの質問に答えることとは無関係です。

どのような考えがすばらしいでしょう、ありがとう。

+1

(Googleのあなたのケースでは)。どのように、いつ、いつ、どのくらいの頻度で認可サーバーがユーザーを確認するかは、独自の決定です。最終的には、あなたのアプリケーションを許可しました。ユーザーがあなたのアプリのトークンを取り消すまで、そうするでしょう。それはあなたの側のトークンを無効にしますが、それは認証サーバー上のユーザーの信頼状態に影響を与えません。 –

+1

@KlausD。それは本当です、そして私はあなたに同意します。 **したがって、私の問題の解決策ではありませんか?**(この記事の最後に示唆されている不吉なこと以外は(https://stackoverflow.com/questions/12909332/how-to-logout- googleを使用してログインする)。 –

+0

結局*あなたの*問題はどうですか? –

答えて

0

あなたのアプリケーションに割り当てられたトークンを取り消すには、次のリンクを参照してください。これにより、ユーザーはアプリからログアウトされますが、Googleにログインしたままになります。上記のあなたの記事で言及したのと同じリンクに記載されています。あなたは認証サーバのうちの人を記録していないのOAuthで

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

+0

私の質問を正しく読めば、revoke()がうまくいかない理由と、なぜ私がGoogleからユーザーに署名する必要があるのか​​を説明していることがわかりますが、私はそれをうまくやりたいと考えています。 –

関連する問題