Google+ サインインを使用してユーザーを認証する ASP.NET MVC アプリケーションがあります。流れは以下の通りです。
- ユーザーが [Authorize] 属性で装飾されたコントローラー アクションにアクセスすると、ユーザーがログイン ページに転送されるようにフォーム認証が構成されます。
- ユーザーが [Google+ でサインイン] ボタンをクリックすると、ガイドに従ってサーバー側のフローが開始されます
- サーバーは、ユーザーの認証に使用される Google トークンを受け取り、ログインして、応答で標準の asp.net 認証 Cookie を返します。その後、ユーザーは Cookie を使用してサイトにアクセスできます。
ここで、ユーザーの Cookie/セッションをクリアする通常の asp.net フォーム ログアウト プロセスを実行すると、問題が発生します。ログアウトした後、別のタブで Google サービスにログインしたままアプリケーションにアクセスしようとすると、ログイン ページにリダイレクトされます。Google+ サインイン ボタンを押すと、自動的に再度サインインし、サインイン プロセス全体が開始され、新しい asp.net Cookie が取得されます!! 本当にログアウトする唯一の方法は、まだどの Google サービスにもログインしていないことを確認してから、ログアウトを試みることです。正確にはユーザーフレンドリーではありません。すべての Google 製品で同じことが起こると思います。Gmail にサインインしてドキュメントを開くと、自動的にサインインされます。違いは、いずれかからログアウトすると、すべての Google サービスからログアウトすることになります。おもう。