SuperAPI AI 工具集

google-pubsub-webhooks

通用与其它

查看项目

更新于 10-15 22:14

技能介绍

用途:帮助在 HTTP 端点接收 Google Cloud Pub/Sub 推送订阅消息,并验证请求确实来自 Google。适用于搭建 Pub/Sub 推送端点、校验 Authorization: Bearer 中的 OIDC JWT、排查 401 与重复投递等问题。

主要能力:说明 Pub/Sub 与 HMAC 签名 Webhook 的区别——没有签名密钥、没有 X-Goog-Signature、正文不签名,因此无需原始请求体,可先解析 JSON。解析推送信封(message.data 为 base64 且可能缺失,attributes 可选,orderingKey 与 deliveryAttempt 仅在启用时出现)。提供 OIDC 校验核心逻辑:用 google-auth-library 的 verifyIdToken 校验 RS256 签名、aud、exp,再自行检查 iss(接受 https://accounts.google.com 或 accounts.google.com)、email_verified 与服务账号邮箱(大小写不敏感)。Python 用 google-auth 的 id_token.verify_oauth2_token 同理。

使用方式:配置环境变量 PUBSUB_AUDIENCE、PUBSUB_SERVICE_ACCOUNT_EMAIL,可选 PUBSUB_VERIFICATION_TOKEN、PUBSUB_SUBSCRIPTION,以及模拟器用的 PUBSUB_ALLOW_UNAUTHENTICATED。返回 200/201/202/204/102 表示 ack,其他状态或超时为 nack 并触发重投递;需在 ack deadline(默认 10 秒,最长 600 秒)内响应,慢任务异步处理。本地开发可用 npx hookdeck-cli listen 3000 google-pubsub --path /webhooks/google-pubsub 获取 HTTPS URL。

适用场景与限制:默认订阅无来源证明,需靠不可猜测的 ?token= 与网络层限制;推荐配置 OIDC。投递为至少一次,需按 message.messageId 去重。重复 nack 会触发整个订阅的推送退避。经 Hookdeck GOOGLE_PUBSUB 源接收时 OIDC 为必填,且该网关忽略 exp,直连端点则应由库校验 exp。示例默认失败关闭,未配置 OIDC 或 token 时拒绝请求,除非显式允许未认证。Pub/Sub 模拟器不发送 Authorization 头。