几个月前,我迁移了离开Google App Engine。但是,由于我的用户通过GAE上的user_id属性进行识别,因此仍然依赖它进行身份验证。
为此,我的(现在外部的)应用程序使用加密、签名和时间戳的登录请求将用户重定向到Google App Engine应用程序。然后,GAE应用程序使用GAE的“Users”服务执行登录。成功登录GAE后,用户再次使用加密、签名和时间戳的响应被重定向到我的外部应用程序。
可以在这里和这里找到基本实现。正如您所看到的,这非常基础,并且依赖于导致性能不佳的重加密。
在这种情况下,我的外部应用程序(在本例中为Django应用程序)将user_id存储在用户表的密码字段中。除了user_id之外,我只从GAE获取电子邮件地址以存储用户名和电子邮件在Django中。
现在,我想删除对GAE服务的依赖性。首先想到的方法可能是发送电子邮件给每个用户,要求他设置新密码,然后使用Django执行自己的身份验证。
我更喜欢依赖于Google的OpenID服务的解决方案,以便对用户实际上没有任何区别。这也是首选,因为我需要将用户发送到Google以获取Google日历API的AuthSub令牌。
问题在于,我找不到一种方法来获取给定Google帐户的GAE user_id属性,而不使用GAE。OpenID和所有其他身份验证协议都使用不同的标识符。
现在的问题是:谷歌是否提供了我尚未看到的可用于此目的的API?是否有任何其他可能的解决方案或想法来迁移用户帐户?
提前感谢!
为此,我的(现在外部的)应用程序使用加密、签名和时间戳的登录请求将用户重定向到Google App Engine应用程序。然后,GAE应用程序使用GAE的“Users”服务执行登录。成功登录GAE后,用户再次使用加密、签名和时间戳的响应被重定向到我的外部应用程序。
可以在这里和这里找到基本实现。正如您所看到的,这非常基础,并且依赖于导致性能不佳的重加密。
在这种情况下,我的外部应用程序(在本例中为Django应用程序)将user_id存储在用户表的密码字段中。除了user_id之外,我只从GAE获取电子邮件地址以存储用户名和电子邮件在Django中。
现在,我想删除对GAE服务的依赖性。首先想到的方法可能是发送电子邮件给每个用户,要求他设置新密码,然后使用Django执行自己的身份验证。
我更喜欢依赖于Google的OpenID服务的解决方案,以便对用户实际上没有任何区别。这也是首选,因为我需要将用户发送到Google以获取Google日历API的AuthSub令牌。
问题在于,我找不到一种方法来获取给定Google帐户的GAE user_id属性,而不使用GAE。OpenID和所有其他身份验证协议都使用不同的标识符。
现在的问题是:谷歌是否提供了我尚未看到的可用于此目的的API?是否有任何其他可能的解决方案或想法来迁移用户帐户?
提前感谢!
convert_userid(user,'domaina.com')
和convert_userid(user,'domainb.com')
。现在您知道用户在两个不同站点上的OpenID,完全绕过了Google OpenID为每个站点发行不同URL的要点。 - Nick Johnson