Google app engine 谷歌应用程序相互对话

Google app engine 谷歌应用程序相互对话,google-app-engine,authentication,Google App Engine,Authentication,我正在寻找一种方法,使两个谷歌应用程序能够相互对话并共享数据。我有以下情况: 应用程序用户使用谷歌应用程序登录登录 应用程序B使用谷歌应用程序登录登录用户 然后,这些应用程序需要使用一些API直接相互通信(服务器到服务器) 问题是:这些应用程序如何验证另一个是用同一个用户登录到谷歌的?我会想象这样的情况: -应用程序A从Google获得一些“令牌”,并将其发送给应用程序B -应用程序B验证此令牌对于登录时使用的同一Google帐户有效 有没有办法通过谷歌联合登录来实现这一点?我说的是这里。这

我正在寻找一种方法,使两个谷歌应用程序能够相互对话并共享数据。我有以下情况:

  • 应用程序用户使用谷歌应用程序登录登录
  • 应用程序B使用谷歌应用程序登录登录用户
  • 然后,这些应用程序需要使用一些API直接相互通信(服务器到服务器)
问题是:这些应用程序如何验证另一个是用同一个用户登录到谷歌的?我会想象这样的情况: -应用程序A从Google获得一些“令牌”,并将其发送给应用程序B -应用程序B验证此令牌对于登录时使用的同一Google帐户有效


有没有办法通过谷歌联合登录来实现这一点?我说的是这里。

这里有一个简单的方法:

  • 在两个应用程序上,您都将所有内容都设置为用户的Google用户ID
  • 使用包含用户ID的HTTP请求共享数据
  • 为了防止用户ID泄漏(account API禁止)并验证消息是否确实来自其他应用程序,可以使用对称密码(如AES或Blowfish)或任何您喜欢的密码对请求进行加密。两个应用程序都嵌入了相同的密钥 您可以使用公钥加密。在我看来,只有两个应用程序是不值得的。如果你开始有更多的应用程序,公钥是有意义的

    细节:如果没有额外的措施,加密不能保证完整性或来源。您需要采取预防措施防止播放,例如通过合并时间戳或序列号。您需要采取预防措施防止篡改,例如使用校验和。确保使用CBC和良好的初始化向量。请保守密钥秘密。

    user.user\u id()
    在同一用户的所有应用程序中始终相同。因此,您可以简单地比较
    user.user\u id()
    返回的值。这就是你要找的吗

    注意:每个用户都有相同的用户ID 适用于所有应用程序引擎应用程序。如果 您的应用程序在公共场合使用用户ID 数据,例如通过将其包含在URL中 参数,则应使用哈希 添加了“salt”值的算法 隐藏ID。暴露原始ID可能会 允许某人关联用户的 一个应用程序中的活动 另一个,或获取用户的电子邮件 通过强制用户签名来寻址 进入另一个应用程序


    谢谢您的回复,但我如何验证其他应用程序是否使用相同的用户ID登录到google?这是我的关键问题。非常感谢指针-但我想这个值永远不会改变,对吗?应用程序可以“缓存”它,然后永远提交?这里没什么大不了的,但可能有一些不太永久的东西,比如每会话令牌?是的,这个值永远不会改变。您可以自己创建和处理令牌。没有什么比这个内置的应用程序引擎更好的了。