如何在谷歌应用引擎上构建的两个应用之间安全地建立通信?

时间:2011-10-29 04:56:49

标签: java google-app-engine

我们在谷歌应用引擎(java)上发现了两个应用程序,我们需要在那之间建立安全通信。基本上我们有:

APP1 “公共”APP,根据JSON格式的请求以JSON格式提供数据。数据是私有的,仅受特定请求的限制。

APP2:“内部/非公开”APP以JSON格式向APP1请求数据,需要以JSON格式接收响应。

上面的场景工作正常,我们让两个应用程序相互通信。但是,我们需要这种通信是安全的,我们需要识别(授权和认证过程),这实际上是APP2向APP1请求数据。

我们已经考虑了很多方法,但我们没有遇到最终的解决方案,我希望有人实现了类似的东西。

1)我们考虑使用oAuth,构建“提供商APP”并让APP2通过此提供商订阅我们的APP1。我们看看这个解决方案的原因是,未来我们可能允许第三方应用程序(APP3)在订阅模式下使用APP1中的数据。

问候。

2 个答案:

答案 0 :(得分:7)

从一个应用程序到另一个应用程序的请求始终将X-AppEngine-Inbound-AppId标头设置为原始应用程序的AppID。此标头不能由其他应用程序或外部服务伪造 - 它由App Engine系统清理。

但是,作为编辑说明,将您的应用分成两个独立的应用程序并不是一个好主意,除非您确实拥有可以被外部服务同样使用的API。在内部组织您的应用程序的职责通常更有效,并且在分离问题方面同样有效。

答案 1 :(得分:2)

此功能现已内置于App Engine API中。应用可以安全地向其他应用声明自己的身份。

REF: http://code.google.com/appengine/docs/java/appidentity/overview.html#Asserting_Identity_to_Other_Systems