2016-04-23 4 views
0

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.

+0

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

Antwort

0

Ihr Widget url sollte sein: 'http://www.example.com/oauth2callback?mode=select&signInSuccessUrl=' + encodeURIComponent('/home#xyz')

Der Hash-Teil als Teil der URL behandelt wird selbst und der signInSuccessUrl Abfrage Wert hier.

+0

Vielen Dank für Ihre Antwort. Ich habe eine Herausforderung bei der Umsetzung Ihres Ansatzes. Siehe das "UPDATE", das ich meinem OP hinzugefügt habe. – DFB

+0

Zufälligerweise, genau ein Jahr später, habe ich es erneut getestet und Ihr Ansatz funktioniert! Vielen Dank. – DFB

Verwandte Themen