0

我有一个 App Engine 工作人员来处理我的 Google Cloud Tasks 队列的请求。我如何验证来自我的任务队列的请求,因为它允许来自任何其他主机或客户端的请求?

我尝试阅读 App Engine 任务request headers,但我认为这不足以验证请求。

此外,如何验证来自同一 Google 云项目(如internal服务)的请求?

4

2 回答 2

3

使用请求标头是验证来自 Cloud Tasks 的请求的最佳方式。App Engine 将从尝试模仿内部标头的请求中去除标头,例如X-AppEngine-QueueName.

不幸的是,在 Python 3 中,没有办法像在Python 2.7app.yaml中那样限制经过身份验证的用户。

最后,如果这还不够,我建议将您自己的JWT添加/签名到请求标头并在您的 App Engine 处理程序中对其进行身份验证。

于 2019-12-10T18:39:40.533 回答
0

Kolban 分享的教程是针对 HTTP Target 任务处理程序的。我了解到您正在使用 App Engine 任务处理程序。

App Engine 任务处理程序不支持“oauthToken”和“oidcToken”字段链接

根据官方文档,您必须保护您的任务句柄 URL,以防止恶意外部调用链接

例如:

 handlers:
 - url: /your-task
   script: worker.app
   login: admin

您可以找到更多信息:创建 App Engine 任务处理程序

于 2019-12-09T10:30:33.983 回答