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をハッシュフラグメントでエンコードできます。
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