Google应用程序应用程序相互通信

时间:2010-11-18 17:10:57

标签: google-app-engine authentication

我正在寻找两种Google Apps应用程序相互通信并在彼此之间共享数据的方法。我有以下情况:

  • 应用程序A使用Google Apps登录记录用户
  • 应用程序B使用Google Apps登录记录用户
  • 然后这些应用程序需要使用某些API直接相互通信(服务器到服务器)

问题是:这些应用程序如何验证另一个应用程序是否使用同一用户登录Google?我会想象:   - 应用程序A从Google获取一些“令牌”并将其发送到应用程序B.   - 应用程序B验证此令牌对于使用

登录的同一Google帐户有效

有没有办法通过Google Federated Login实现这一目标?我在这里谈论Hybrid protocol

2 个答案:

答案 0 :(得分:1)

这是一个简单的方法:

  1. 您可以在两个应用程序上将所有内容都锁定到用户的Google用户ID。
  2. 您使用包含用户ID的HTTP请求共享数据。
  3. 为了防止用户标识泄露(帐户API禁止)并验证邮件是否真正来自其他应用程序,您可以使用AES或Blowfish等对称密码或任何您喜欢的密码加密请求。两个应用程序都嵌入了相同的密钥。
  4. 您可以使用公钥加密。只有两个应用程序,在我看来它是不值得的。如果你开始有更多的应用程序,公钥是有道理的。

    小字:加密不保证完整性或原产地,无需额外措施。您需要采取预防措施,例如通过合并时间戳或序列号。您需要采取预防措施防止篡改,例如:带校验和。确保使用CBC和良好的初始化向量。密钥保密。

答案 1 :(得分:1)

user.user_id()在同一用户的所有应用中始终相同。因此,您只需比较user.user_id()返回的值即可。这是你在找什么?

  

注意:每个用户都具有相同的用户ID   适用于所有App Engine应用程序。如果   您的应用在公共场合使用用户ID   数据,例如将其包含在URL中   参数,你应该使用哈希   添加了“salt”值的算法   模糊了ID。公开原始ID可以   允许某人关联用户   一个应用程序中的活动   另一个,或获取用户的电子邮件   通过强制用户签名来解决问题   进入另一个应用程序。

From docs