为什么Google App Engine会在登录时向我的"继续"位置添加路径?

Hen*_*ger 7 authentication google-app-engine

我正在使用Greasemonkey脚本中非常简单的GAE实例.这在过去几个月中运行良好,但现在路径被附加到最终的"继续"位置,这会破坏我的登录过程.

基本工作流程,假设用户已登录其Google帐户,但他的GAE实例令牌已超时:

  1. 用户打开安装了GM脚本的页面A.
  2. GM脚本运行并尝试使用GM_xmlhttpRequest()访问GAE实例.
  3. GAE实例返回"login_needed | <loginurl>".GM脚本提取loginurl并window.location在其上设置.
  4. 用户被重定向到loginurl并最终返回A.但是,这次,GM_xmlhttpRequest()返回实际数据.

最后一步不再有效,因为用户现在被重定向到loginurl 加上一些,这在目标站点上提供了404.

GAE代码只有大约一半的代码.认证相关代码是这样的:

if not users.get_current_user():
    self.response.headers['Content-Type'] = 'text/plain'
    self.response.out.write('login_needed|'+users.create_login_url(self.request.get('uri')))
Run Code Online (Sandbox Code Playgroud)

请求序列如下,全部由重定向引起:

  • 获取https://mygaeinstance.appspot.com/?uri=https://targetsite.com/
  • 获取https://www.google.com/accounts/ServiceLogin?service=ah&passive=true&continue=https://appengine.google.com/_ah/conflogin%3Fcontinue%3Dhttps://targetsite.com/<mpl=gm&ahname=MyGAEInstance&sig = <some sig>
  • 获取https://appengine.google.com/_ah/conflogin?continue=https%3A%2F%2Ftargetsite.com%2F&pli=1&auth=<some base64 auth token>
  • 获取https://targetsite.com/_ah/conflogin?state=<some base64 state>

targetsite.com不喜欢这条道路,正如你所看到的,它是不是在最初的"继续"传递给appengine.google.com说法,这只是"https://targetsite.com/".我做错了什么,如何解决这个问题?

Nic*_*son 3

最近对 App Engine 登录流程的一项更改造成了一个问题,即使用应用程序自己的域之外的继续 URL 登录将导致错误的重定向,例如您所观察到的重定向。

我们正在努力解决这个问题。与此同时,解决方法是在您自己的应用程序上设置重定向处理程序。使其成为 continue 参数的目标,并让它发送最终重定向到您的实际目标。

  • 与此相关的任何票据/问题值得关注吗? (4认同)