【问题标题】:How to exclude certain header from API Gateway Mapping Template如何从 API Gateway 映射模板中排除某些标头
【发布时间】:2019-06-06 21:10:48
【问题描述】:

在 AWS API Gateway 中,我创建了一个 API。我在Integration Request 中为appliction/json 内容类型定义了以下映射模板。

#set($allParams = $input.params())
{
    "body-json" : $input.json('$'),
    "params" : {
        #foreach($type in $allParams.keySet())
            #set($params = $allParams.get($type))
        "$type" : {
            #foreach($paramName in $params.keySet())
            "$paramName" : "$util.escapeJavaScript($params.get($paramName))"
                #if($foreach.hasNext),#end
            #end
        }
            #if($foreach.hasNext),#end
        #end
    },
    "stage-variables" : {
        #foreach($key in $stageVariables.keySet())
        "$key" : "$util.escapeJavaScript($stageVariables.get($key))"
            #if($foreach.hasNext),#end
        #end
    }
}

此模板映射将所有标头以明文形式转发到后端端点,包括 x-api-key

如何从标题中排除x-api-key

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-api-gateway


    【解决方案1】:

    不太确定是否排除,但我做了这样的事情:

    "headers": {
        #foreach($param in $input.params().header.keySet())
             #if($param.toLowerCase() == "x-api-key")
                "$param": "API Key authentication"
             #else
                "$param": "$util.escapeJavaScript($input.params().header.get($param))" 
             #end
             #if($foreach.hasNext),#end
        #end  
    }
    

    这样您最终不会将 x-api-key 标头值暴露给您的 lambda 函数,但可以肯定知道所使用的身份验证方法是 API 密钥。

    【讨论】:

      猜你喜欢
      • 2020-09-28
      • 2020-02-29
      • 2020-04-18
      • 2017-11-30
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      • 1970-01-01
      相关资源
      最近更新 更多