2016-04-23 19 views
0

Webアプリケーション(GAE for Java)での認証にGoogle Identity Toolkitを使用しています。ユーザーがURL http://www.example.com/home#xyzにアクセスしようとすると、私のアプリケーションはユーザーを認証ページにリダイレクトします。私の場合はhttp://www.example.com/oauth2callback?mode=select&signInSuccessUrl=/home#xyzです。Google Identity ToolkitはsignInSuccessUrlのハッシュ(#)フラグメントを無視します

ただし、認証に成功すると、IDツールキットはhttp://www.example.com/home#xyzの代わりにhttp://www.example.com/homeにユーザーをリダイレクトします。

IDツールキットの問題ですか、何か不足していますか?リダイレクト後にハッシュフラグメントを保持するための回避策はありますか?

完全な使用例です。

ユーザーはURL http://www.example.com/home#xyzに行きます。ユーザーがサインインしていない場合、JSPであるhomeページは、スクリプトレットを使用してhttp://www.example.com/oauth2callback?mode=select&signInSuccessUrl=/homeにユーザーをリダイレクトします。

JSPスクリプトレットはサーバー内で実行されているため、#xyzというハッシュフラグメントにはアクセスできませんが、ブラウザには最後に#xyzが自動的に追加され、アドレスバーにはhttp://www.example.com/oauth2callback?mode=select&signInSuccessUrl=/home#xyzが表示されます。

ただし、ログイン後、ユーザーはhttp://www.example.com/homeにリダイレクトされます。私はJSPスクリプトレット内のハッシュフラグメントにアクセスする必要があります。これは、わからないので、以下のbojeilの応答で述べたように、URIをハッシュフラグメントでエンコードできます。

+0

OAuth2仕様によれば、リダイレクトURLにはフラグメント(https://tools.ietf.org/html/rfc6749#section-3.1.2)を含めないでください。回避策は、そのxyzをコンテキストに入れておくことです(https://developers.google.com/identity/toolkit/web/reference/relyingparty/createAuthUri#http-request) – Ying

答えて

0

あなたのウィジェットのURLは次のようになります。 'http://www.example.com/oauth2callback?mode=select&signInSuccessUrl=' + encodeURIComponent('/home#xyz')

ハッシュ部分は、URL自体、ここsignInSuccessUrlクエリ値の一部として扱われています。

+0

ご回答ありがとうございます。あなたのアプローチを実装するのに挑戦しています。 OPに追加した「UPDATE」を参照してください。 – DFB

+0

ちなみに、ちょうど1年後、私はもう一度それを試して、あなたのアプローチは動作しました!ありがとうございました。 – DFB

関連する問題