如何为 Google Cloud App Engine 任务处理程序进行身份验证

How to authenticate for Google Cloud App Engine task handlers

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

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

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

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

App Engine 任务处理程序不支持 "oauthToken" 和 "oidcToken" 字段 link

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

例如:

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

您可以找到更多信息:Creating App Engine task handlers

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

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

最后,如果这还不够,我建议 adding/signing 您自己的 JWT 请求 header 并在您的 App Engine 处理程序中对其进行身份验证。