google-app-engine - 如何保护不同 GAE 之间的连接?
问题描述
出于某种原因,我需要使用项目 A 和 B 创建两个 GAE:
- A(flex env) 是一个与 Endpoint 绑定的代理服务器,并使用 API 密钥限制访问。
- B(标准环境)是真正的服务器,做真正的工作。(B不能应用端点框架)
- 客户端只知道代理服务器地址并将所有请求发送到 A
现在我想确保A和B之间的连接。换句话说,B只能从A访问。有什么办法可以实现吗?(防火墙在这里不起作用,因为 GAE 没有静态 IP 范围。)
解决方案
如果您想确定向您的 App Engine 应用发出请求的 App Engine 应用的身份,您可以使用请求标头 X-Appengine-Inbound-Appid。此标头由 URLFetch 服务添加到请求中,用户不可修改,因此它安全地指示请求应用程序的 ID(如果存在)。
在您的应用程序处理程序中,您可以通过读取 X-Appengine-Inbound-Appid 标头并将其与允许发出请求的 ID 列表进行比较来检查传入 ID。
注意: X-Appengine-Inbound-Appid 标头仅在调用appspot.com 域时设置。如果应用程序有自定义域,则不会设置此标头。
这应该对所有 App Engine 标准环境都有效。
推荐阅读
- java - JavaFX DatePicker:可以只有年和月,没有天吗?
- docker - 用于 apache zookeeper 的 Dockerfile,但在运行其容器时发生错误
- javascript - 如何使用特殊字符解构 JS 中的字符串?
- uiviewcontroller - 日期选择器在 UIKit 中不对齐
- ios - Flutter CocoaPods 找不到兼容版本:Cache 和 BetterPlayer
- python - Pandas:AttributeError:“float”对象没有属性“MACD”
- windows - Windows Server 2016 密码哈希
- flutter - 容器的动态大小 - Flutter
- python - 如何将 Pandas 系列中的多个字典键转换为 DataFrame 中的列?
- javascript - 如何在反应中启用禁用的按钮?