推送机制:在 webhook 端点上进行身份验证

Push mechanism: Auth on webhook endpoint

我很好奇 auth 将如何用于 Push 机制。它需要订阅者上的一个端点,该端点必须可以通过互联网访问,因此 pubsub 客户端是否要验证推送的消息确实来自 google?还是留给订户实施?

如果它留给订阅者,建议的实现方式是什么?

团队意识到这不是一个理想的解决方案,但目前唯一的选择是在推送端点 URL 中添加一个秘密令牌,如以下所述:

https://cloud.google.com/pubsub/faq#security

您还可以定期轮换秘密令牌以获得更好的安全性。当然,您需要妥善保管秘密令牌。

作为替代方案,我建议如下:

  1. 生成密钥。将此密钥存储在发布者和端点上。

  2. 将消息推送到队列时,使用 HMAC-SHA256 和密钥创建消息数据的 HMAC。添加此 HMAC 值作为消息的属性(base64 编码)。

  3. 在处理程序上接收消息时,使用HMAC-SHA256和密钥手动创建消息数据的HMAC,并验证它是否与消息属性中的HMAC匹配。

只要你把秘钥...保密,你的消息数据每次都是唯一的(如果不是就加一个随机数),这样就保证了消息的合法性。

您现在可以使用前缀 /_ah/push-handlers/ 作为推送端点 URL 路径。这将允许您通过在 app.yaml.

中添加 login: admin 来要求管理员登录

示例:myapp.appspot.com/_ah/push-handlers/myhandler

来自https://cloud.google.com/pubsub/docs/advanced