0

oauth2のフローを理解している問題に直面しています。 ユーザー(user_idで識別)がブラウザでGoogleAccounts接続を開始します。リクエストは、リダイレクト文字列をクライアント(Javascript)に送信するサーブレットに渡され、ユーザーはそのAuth URLにリダイレクトされます。 ユーザーの同意がある場合、応答はコールバックURL(サーブレットにマップされます)に返されます。 ここで私の混乱は、コールバックサーブレットが呼び出されたときです。どのauthCodeがどのユーザ(user_id)に属しているのでしょうか? oAuth2の状態パラメータを使用する必要がありますか?Google OAuth2 JavaのサーバーサイドWebアプリケーションのフロー

助けてください。

+0

これは私が知っている最も簡単な方法は、GoogleとAPIを使用することです。 Http://developers.google.com/+/web/api/rest/latest/people/get send meは現在の認証済みユーザーに関する情報を取得します。アクセストークンをトークン検証エンドポイントに送信することもできますが、要求しているスコープに応じて – DaImTo

+0

@DalmTo私は正しく質問しません。詳細は 私のWebアプリケーションでは、(認証された) id、ブラウザの最後に(1つ以上の)Googleアカウントを接続しようとします。サーバー側(java)は、oauthフローを開始して、ユーザーをauthurlにリダイレクトします。ユーザーの同意を得た後、私のコールバックサーブレット上で、自分のアプリケーションのどのユーザー(固有のIDで識別される)がこのGoogleアカウントへの接続を開始したのかを識別し、そのユーザーに対してこのGoogle認証を保存できるようにしたい。 助けてください、私は州のparanを使用する必要があります – zee

+0

私はあなたが応答でuser_idを運ぶので状態パラメータを試すことができると思います。その説明は次のとおりです。応答を受け取ったときにアプリケーションに役立つ可能性のある状態を提供します。 Google Authorization Serverはこのパラメータをラウンドトリップして、アプリケーションが送信したのと同じ値を受け取るようにします。使用可能な用途には、ユーザーをサイトの正しいリソースにリダイレクトする、サイト間要求を偽造するなどがあります。 https://developers.google.com/identity/protocols/OAuth2UserAgent – Abhishek

答えて

0

コメントが示唆しているとおり、state paramはあなたの友人です。最も簡単な方法は、単にstate=user_idを設定することです。別の方法として、サーバーセッションを開始し、ユーザーIDをセッションオブジェクトに格納する方法があります。この後者のアプローチでは、比較的シンプルなサーバーがあること、またはクラスタが共有セッションをサポートしていることが前提です。

関連する問題