当前位置: 首页 > 知识库问答 >
问题:

根据匹配模式进行 aws api 网关标头验证

宰父单弓
2023-03-14

我正在创建一个AWS API网关使用terraform和openAPI规范与swagger。我需要添加一个请求验证器,根据匹配的模式[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}$"
              }
            ]
       }
}

请建议是否有任何方法实现这一点

共有2个答案

阎弘
2023-03-14

代替

"type": "string",
"pattern" : "^[a-z0-9]{10}$"

应该是这样的

"schema": {
  "type": "string",
  "pattern" : "^[a-z0-9]{10}$"
}

另请参见此处

宰父飞翼
2023-03-14

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

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

您可以使用API网关控制台检查如何配置Lambda授权器。

 类似资料:
  • 我正在创建一个用于Postman的JSON模式,其中包含一些模式定义。我针对模式验证的JSON需要与模式定义之一匹配。 示例模式 JSON数据示例 此JSON根据模式进行验证,并正确标记为无效(因为需要字符串): 问题 此示例根据https://www.jsonschemavalidator.net/返回4个错误: 消息:JSON对“oneOf”中的任何模式都无效。模式路径:#/oneOf 我只对

  • 我有一个字符串,我正试图根据几个regex模式验证它,我希望由于模式匹配在3.10中可用,我可以使用它来代替创建if-else块。 考虑一个字符串'validateString',其可能的值1021102,1.25.32string021。 我尝试的代码如下所示。 对于正则表达式1、2和3,我尝试了字符串正则表达式模式,还重新设置了。编译对象,但它似乎不起作用。 我一直试图在互联网上找到这方面的例

  • 我们正在尝试从C#Windows服务调用AWS API网关来执行后台作业。哪个应该触发API网关定期初始化请求? 我们使用RestSharp调用APIendpoint,该类称为AwsAuthenticator,它继承自RestSharp.Authenticators.IAAuthenticator。但当我们调用API Gateway时,收到的错误是“我们计算的请求签名与您提供的签名不匹配。请检查您

  • 模式匹配,多出现在函数式编程语言之中,为其复杂的类型系统提供一个简单轻松的解构能力。比如从enum等数据结构中取出数据等等,但是在书写上,相对比较复杂。我们来看一个例子: enum Direction { East, West, North, South, } fn main() { let dire = Direction::South; matc

  • 问题内容: 我从一些JSON文件创建了API规范,并且尝试测试这些文件是否根据API规范进行了验证。 有一些不错的工具可以根据JSON Schema进行验证,但是我没有找到针对Swagger中创建的规范进行验证的工具(用于创建API架构的工具)。我发现的唯一解决方案是在Swagger- Editor中生成客户端/服务器,这非常麻烦。 是否已经有现有工具可以针对Swagger Schema验证JSO

  • 问题内容: 有没有一种方法可以针对该结构的JSON模式验证JSON结构?我已经查看并发现JSON.Net验证了,但这并不能满足我的要求。 JSON.net可以: 这证明是正确的。 这也证明是真的 仅此验证为假。 理想情况下,我希望它可以验证那里也没有应该存在的字段。 问题答案: 我认为您只需要添加 到您的架构。这将停止提供未知属性。 因此,现在您的结果将是:-正确,错误,错误 测试代码… 输出:-