使用 AWS API Gateway 的 Github Webhooks 秘密

2024-04-09

我正在尝试让 Github Webhook 启动我拥有的 AWS Lambda。 我能弄清楚如何做到这一点的最好方法是使用 AWS API Gateway,问题是安全性。

Github Webhooks 只会通过 POST 调用发送秘密。

我找不到任何方法让 AWS API Gateway 验证此签名。 或者我可以在哪里添加此功能。

我想我可以写一个AWS Lambda 授权者 https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html#api-gateway-lambda-authorizer-flow。 但这是在不同地方的大量代码,开始看到需要serverless框架。

我不知道AWS中有没有更简单的设置?


来到这里是因为我试图将 Github webhook 与 AWS lambda 集成,并遇到了与 OP 相同的问题。在撰写本文时,我认为最好的解决方案是在主 lambda 中包含验证代码,正如其他人所建议的那样。

2017 年 9 月的 AWS 计算机博客上:

增强的请求授权方 Lambda 函数接收类似于代理集成的事件对象。它包含有关请求的所有信息,不包括正文。

Source: 在 Amazon API Gateway (amazon.com) 中使用增强型请求授权方 https://aws.amazon.com/blogs/compute/using-enhanced-request-authorizers-in-amazon-api-gateway/

您无法按照 Github 的建议执行 HMAC,因为 AWS 授权者 lambda 不允许您访问 HTTP 请求的正文,而您需要访问 HTTP 请求的正文才能比较摘要。

这很遗憾,因为 HMAC 似乎是保护响应 Webhook 的端点的相当标准的方法。例如,请参阅这篇博文,Webhooks 的注意事项:我们在集成 100 个 API 后学到的东西 (restful.io) https://restful.io/webhooks-dos-and-dont-s-what-we-learned-after-integrating-100-apis-d567405a3671。 Twitter 和 Stripe 做了类似的事情:

  • 保护 webhooks (twitter.com) https://developer.twitter.com/en/docs/accounts-and-users/subscribe-account-activity/guides/securing-webhooks
  • 检查 Webhook 签名(stripe.com) https://stripe.com/docs/webhooks/signatures

为了使上述方法发挥作用,如果您使用 API Gateway,则需要确保包含哈希签名的标头作为eventlambda 的参数。为此,请按照以下说明操作:如何使用自定义 Lambda 集成将自定义标头通过 Amazon API Gateway 传递到 AWS Lambda 函数以进行进一步处理? (亚马逊网站) https://aws.amazon.com/premiumsupport/knowledge-center/custom-headers-api-gateway-lambda/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 AWS API Gateway 的 Github Webhooks 秘密 的相关文章

随机推荐