使用HTTP代理访问AWS API Gateway中的标头?

时间:2016-01-26 15:19:35

标签: amazon aws-api-gateway

我使用的是AWS API Gateway及其HTTP代理,

我需要通过AWS API Gateway将Authorization标头传递给我的端点

我尝试的事情:

设置方法请求,如此,

Method Request

集成请求设置 enter image description here

这不起作用,我的应用程序没有收到授权标题,

我也尝试过使用制图模板

{
  "method": "$context.httpMethod",
  "body" : $input.json('$'),
  "headers": {
    #foreach($param in $input.params().header.keySet())
    "$param": "$util.escapeJavaScript($input.params().header.get($param))" #if($foreach.hasNext),#end

    #end
  },
  "queryParams": {
    #foreach($param in $input.params().querystring.keySet())
    "$param": "$util.escapeJavaScript($input.params().querystring.get($param))" #if($foreach.hasNext),#end

    #end
  },
  "pathParams": {
    #foreach($param in $input.params().path.keySet())
    "$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end

    #end
  }  
}

这也没有用。

任何人都可以给我一些关于如何实现这一目标的暗示吗?

2 个答案:

答案 0 :(得分:1)

由于安全原因,API网关会剥离AWS SigV4授权标头。如果您使用其他授权机制(如OAuth),则不会删除标题。

答案 1 :(得分:0)

最近,我不得不尝试使用API​​网关HTTP代理将AWS SigV4 HTTP请求传递到终端节点。 经过测试和调试后,发现授权已被使用且未通过! 因此,在将请求发送到API网关时-我发送了授权和另一份“ myauth”标头。 (因为请求来自我自己的客户,所以我能够做到这一点。)

在方法请求中,我添加了Authorization和myauth作为HTTP标头 Method Request - HTTP Headers

在集成请求-HTTP标头中,我将myauth映射到Authorization,然后再转发给终结点

Integration Request - HTTP Headers

不知道这是执行此操作的最佳方法,还是可能存在任何潜在问题,但这是可行的!希望这可以帮助某人或提供一些想法。