针对匹配模式的 aws api 网关标头验证

Posted

技术标签:

【中文标题】针对匹配模式的 aws api 网关标头验证【英文标题】:aws api gateway header validation against matching pattern 【发布时间】:2019-07-20 11:14:54 【问题描述】:

我正在使用 terraform 和带有 swagger 的 openAPI 规范创建一个 AWS API 网关。我需要添加一个请求验证器,以根据匹配模式 [a-zA-z0-9]10 验证标头。我能够设置基本验证器来检查标头是否为空,但无法使用模式进行验证。

 "x-amazon-apigateway-request-validators" : 
    "full" : 
      "validateRequestBody" : true,
      "validateRequestParameters" : true,
       "validateRequestHeaders" : true
    ,
    "body-only" : 
      "validateRequestBody" : true,
      "validateRequestParameters" : false
    
  ,
  "x-amazon-apigateway-request-validator" : "full",
  "paths": 
    "/validation": 
    "get": 
            "parameters": [
              
                "in": "header",
                "name": "x-request-id",
                "required": true,
                "type": "string",
                "pattern" : "^[a-z0-9]10$"
              ,
              
                "in": "query",
                "name": "name",
                "required": true,
                "type": "string",
                "pattern": "^[a-zA-Z]5$"
              
            ]
       

请建议是否有任何方法可以实现这一目标

【问题讨论】:

【参考方案1】:

我可以根据您的要求建议一种解决方法。您可以使用“基于请求”Lambda authorizer 并在 Lambda 函数中实现验证逻辑。如果您只需要验证一个标头,您也可以使用“基于令牌”的 Lambda 授权方并指定一个令牌验证正则表达式。

一旦 Lambda 函数确定传入的标头是否有效,它就可以授予对 API 的访问权限。

您可以查看如何Configure a Lambda Authorizer Using the API Gateway Console

【讨论】:

以上是关于针对匹配模式的 aws api 网关标头验证的主要内容,如果未能解决你的问题,请参考以下文章

修复 AWS API 网关不存在的 CORS“对预检的响应 ...”标头并放大

获取不存在“Access-Control-Allow-Origin”标头 AWS api 网关

如何针对我的 AWS Api Gateway 对后端服务进行身份验证

AWS API Gateway按标头信息调用Lambda版本

为啥 API 网关和认证服务应该不同?

从 AWS API 网关请求的资源上不存在“Access-Control-Allow-Origin”标头 [重复]