在多个服务器上保留身份验证

时间:2010-06-22 12:23:24

标签: google-app-engine authentication

我正在Google appengine python中编写一个应用程序。由于appengine环境的有限支持,我必须在外部专用服务器上实现一些功能。是否有可用的身份验证机制,可以通过外部服务器和appengine保留登录信息。

1 个答案:

答案 0 :(得分:2)

你想要的系统可能应该是这样的:

  1. 当用户访问没有设置会话cookie的“其他”服务器时,服务器会将用户重定向到App Engine应用程序上的特殊URL - 让我们使用/ authenticate - 使用提供URL的“next”查询字符串参数下一阶段(在#3中描述)。
  2. 当App Engine收到/ authenticate请求时,它会检查用户是否已登录。如果不是,则会提示他们登录。然后,它会为用户的会话生成令牌,并使用HMAC签名,使用两台服务器共享的秘密,并将用户重定向到步骤1中提供的URL ,HMAC包含在查询字符串中。
  3. 当“其他”服务器收到对其特殊URL(在步骤#1中指定)的请求时,它使用共享密钥验证HMAC是否匹配,如果是,则使用其自己的会话支持来设置cookie在其域下的用户浏览器上,从那时开始跟踪用户。
  4. 如果“其他”服务器需要获取有关用户的更多信息,它可以使用与App Engine服务器共享的API,使用给定的令牌,带外请求有关用户的更多信息和共同的秘密。
  5. 这与OAuth使用的程序非常相似,但对于用户来说完全不兼容。这也是Google帐户等SSO系统用于将会话“转移”给其他可信方的过程。