如果字段不匹配,则使用 AWS API 网关拒绝来自 Slack 的应用程序/x-www-urlencoded 调用



我有来自Slack Out Webhooks的帖子请求,这些请求正在通过API网关到达AWS lambda函数。我想在API网关上过滤请求,然后才能降低lambda函数的次数,以减少为安全目的调用lambda函数的次数。

从技术上讲,通话来自何处或去向都没关系。

我问题的核心是我想知道如何过滤/拒绝AWS API Gateway如果字段不符合我的期望。

例如,考虑此JSON。

{
  "body": "token=specificToken&someOtherField=someValue"
}

如果令牌字段不匹配预期的"特定"值,我想拒绝该请求。

您可以使用REQUEST类型的自定义授权器来执行此操作。REQUEST -Type自定义授权器可以使用请求主体授权请求。

参考:创建一个API网关自定义授权器lambda函数(向下滚动到REQUEST类型)

基本上,您在API网关之间编写另一个用作中间件的lambda。此自定义授权器将决定是允许请求还是将Unauthorized返回API网关。

我们有相同的要求(使用lambda授权器验证Slack的请求),可悲的是,REQUEST类型dik dim not> not 可以访问请求的body。标题,路径,Querystring ...但不是身体。这似乎是通过设计。请参阅自定义授权器lambda函数的访问邮政请求主体。

我们尝试了一个自定义的车身映射模板以将值从身体中拉出并将其放入标题中,但是在授权后使用映射,因此不起作用。

最后,我们决定将自己的令牌放在我们的slash命令调用的Webhook的查询中,并验证REQUEST授权器内的可能是可能的。不那么安全,但可以工作。

最新更新