2017-07-21 8 views
0

私はWebプラットフォームを開発しています。私は奇妙な動作に気付きました。複数のアカウントのOAuthでのログイン拒否

  1. Webブラウザを開いてGoogleの
  2. によって
をキャンセルするに
  • はパーミッション画面クリックでGoogle
  • によって、新しいアカウントにログイン、ログアウト中のウェブサイト
  • ログインへ
  • ゴー

    これにより、ユーザーは最初のアカウントにログインします。 Oauthのこの標準的な動作ですか?

  • +0

    この現象を再現する方法の詳細を教えてください。このフローを処理するためにクライアント側またはサーバー側のライブラリを使用していますか?それは認証コードフローを使用していますか? – TMSCH

    +0

    私たちはクライアントサイドライブラリOwin Identityを使用しています。この問題は、2つのGoogleアカウントを使用すると再現できます.1つはアプリケーションにアクセスし、もう1つはアプリケーションなしです。 2つ目のアクセスを拒否すると、最初はoauthへの呼び出しによって返されます。 – Alexer99

    答えて

    0

    あなたが記述したふるまいは、OpenID接続プロトコルと比べて、Googleの独自のセッション管理に関連しています。

    OpenID Connectは徐々にOAuth 2.0を置き換えており、Googleは新しいプロトコルの定義に参加しています。

    プロトコルのGoogleの指紋は、あなたが記述した領域に正確に表示されます。 複数のアカウント間で選択肢を処理する。 フィールドプロンプトで3.1.2.1. Authentication Requestを見て、select_accountの値がそこにある理由を考えます。

    とにかく、IDサーバーが、最近ログアウトしたアカウントで有効なコードを持つ認証要求に応答しているような動作は正しくありません。

    プロトコルに準拠しているという信用をGoogleに与えたら、ネットワーク通信を調べて、Googleエンドポイントが間違ったユーザーの有効な認証を実際に返しているかどうかを確認するか、古いセッション報告のため

    グッドラック

    エヤル

    +0

    お返事ありがとうございます。私はすでにGoogleサーバーレスポンスをチェックしており、最初のアカウントのデータを取得しています。すべてを選択したようになります。それは私がそれがとても奇妙だと思う理由です。テスターはまた、この問題はFacebookのログインを使用して発生すると報告したが、私はそれをテストすることができませんでした。私たちは、Owinのアイデンティティを使用してコールを管理します。 – Alexer99

    +0

    私はOwinのアイデンティティーに精通していません。この場合、JavaScriptライブラリまたは.netライブラリが使用されていますか? – Guibin

    +0

    この場合は.netライブラリです。それは自動的にGoogleとfacebook oauthへのすべての要求を処理しますが、ここでの問題は私たちがGoogleから得た応答です、それは最初のユーザーに関するすべての情報を持っています。 – Alexer99

    0

    感謝。私たちはこれを調べて返答します。私は、ユーザーがアカウントBの承認ページを見てキャンセルを押すと、最初のアカウントにサインインするべきではないことに同意します。

    ユーザーが2つのアカウントにサインインし、1つのアカウントが既に承認されている場合、そのアカウントを自動的に選択する場合に最適化します。

    +0

    文書化されたオート選択動作はどこにありますか? – pinoyyid

    +0

    明示的に文書化されているかわかりません。これをhttps://developers.google.com/identity/sign-in/web/session-stateにすると、ユーザーがあなたのアプリを許可した人にサインインした場合にコールバックを受けることになります。複数のユーザーがログインしている場合はユーザー1,2,3) – nvnagr

    +0

    リンクに感謝します。どこにでも、特にセキュリティに関係するすべての動作を文書化する必要があることを謙虚に示唆することができます。 – pinoyyid

    関連する問題