Search code examples
aws-api-gateway

Access headers in AWS API Gateway using HTTP Proxy?


I'm using AWS API Gateway and it's HTTP Proxy,

I need to pass Authorization header to my endpoint through AWS API Gateway

Things I've tried:

Setting Method Request like so,

Method Request

Integration Request setup enter image description here

This doesn't work, my app doesn't receive the Authorization header,

Also I've tried using mapping template

{
  "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
  }  
}

This also doesn't work.

How can this be accomplished?


Solution

  • Recently I had to try using an API Gateway HTTP proxy to pass an AWS SigV4 HTTP request to an endpoint. After testing and debugging found that the Authorization is being consumed and not passed! So while sending the request to the API Gateway - I sent Authorization and a copy of the Authorization as another header "myauth". (I was able to do this since the request is coming from my own client.)

    In the method request I added Authorization and myauth as HTTP Headers Method Request - HTTP Headers

    In the Integration Request - HTTP Headers I mapped myauth to Authorization before it was forwarded to the endpoint

    Integration Request - HTTP Headers

    Dont know if this is the best way to do this or if there could be any potential issues but this worked! Hope this helps someone or gives some ideas.