Ich verwende Google Identity Toolkit zur Authentifizierung in meiner Webanwendung (GAE für Java). Wenn der Benutzer versucht, auf die URL http://www.example.com/home#xyz
zuzugreifen, leitet meine Anwendung den Benutzer auf die Authentifizierungsseite um, die in meinem Fall http://www.example.com/oauth2callback?mode=select&signInSuccessUrl=/home#xyz
ist.Google Identity Toolkit ignoriert Hash (#) Fragment von signInSuccessUrl
Nach erfolgreicher Authentifizierung leitet Identity Toolkit den Benutzer jedoch an http://www.example.com/home
statt http://www.example.com/home#xyz
um.
Ist dies ein Problem mit dem Identitäts-Toolkit oder fehlt mir etwas? Gibt es eine Problemumgehung, um das Hash-Fragment nach der Weiterleitung beizubehalten?
Hier ist der komplette Anwendungsfall.
Benutzer geht zu URL http://www.example.com/home#xyz
. Wenn der Benutzer nicht angemeldet ist, leitet die home
-Seite, die eine JSP ist, den Benutzer mit einem Scriptlet an http://www.example.com/oauth2callback?mode=select&signInSuccessUrl=/home
um.
JSP Scriptlet hat keinen Zugriff auf das Hash-Fragment #xyz
(weil es auf dem Server läuft), aber der Browser hängt automatisch #xyz
am Ende und ich sehe http://www.example.com/oauth2callback?mode=select&signInSuccessUrl=/home#xyz
in der Adressleiste.
Nach der Anmeldung wird der Benutzer jedoch an http://www.example.com/home
umgeleitet. Ich muss Zugriff auf das Hash-Fragment in meinem JSP-Scriptlet erhalten, was ich nicht weiß, wie ich es tun soll, damit ich den URI mit dem Hash-Fragment codieren kann, wie es unten in Bojeils Antwort erwähnt wird.
Laut OAuth2-Spezifikation sollte die Weiterleitungs-URL kein Fragment enthalten (https://tools.ietf.org/html/rfc6749#section-3.1.2). Die Problemumgehung besteht darin, das xyz in Kontext zu setzen (https://developers.google.com/identity/toolkit/web/reference/relyingparty/createAuthUri#http-request) – Ying