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

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

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

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

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

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

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

问候。

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

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

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

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