我有来自Slack的外发webhook的POST请求,这些请求通过API Gateway到达AWS Lambda函数。出于安全考虑,我希望在请求到达我的lambda函数之前使用API网关对其进行过滤,以减少lambda函数被调用的次数。
从技术上讲,呼叫来自哪里,或去往哪里都无关紧要。
我的问题的核心是,如果字段不符合我的期望,我想知道如何使用AWS API Gateway过滤/拒绝Api调用。
例如,考虑下面的json。
{
"body": "token=specificToken&someOtherField=someValue"
}
如果token字段与预期的"specificToken“值不匹配,我希望拒绝该请求。
发布于 2017-10-06 00:21:13
您可以使用REQUEST
类型的自定义授权器来执行此操作。REQUEST
-type自定义授权器可以使用请求正文对请求进行授权。
引用:Create an API Gateway Custom Authorizer Lambda Function (向下滚动到REQUEST
类型)
基本上,您可以编写另一个Lambda,作为您的API网关之间的中间件。此自定义授权器将决定是允许请求还是将Unauthorized
返回给接口网关。
发布于 2018-11-07 20:32:17
我们有相同的需求(使用lambda授权器验证来自slack的请求),不幸的是,REQUEST
类型不能访问请求的body
。标头、路径、查询字符串...但不是身体。这似乎是设计出来的。参见Access POST Request body from Custom Authorizer Lambda Function。
我们尝试了一个自定义的主体映射模板,将值从主体中拉出并放入头中,但映射是在授权之后应用的,所以这不起作用。
最后,我们决定将自己的令牌放入斜杠命令调用的webhook的查询字符串中,并进行验证,这在REQUEST
授权器中是可能的。虽然不是很安全,但还是很管用。
https://stackoverflow.com/questions/46589117
复制相似问题