Доступ к заголовкам в AWS API Gateway с помощью HTTP-прокси?

Я использую AWS API Gateway и это HTTP-прокси,

Мне нужно передать заголовок авторизации моей конечной точке через AWS API Gateway

Вещи, которые я пробовал:

Установка запроса метода так,

Запрос метода

Настройка запроса интеграции  введите здесь описание изображения

Это не работает, мое приложение не получает заголовок авторизации,

Также я пробовал использовать шаблон сопоставления

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

Это тоже не сработало.

Может ли кто-нибудь дать мне какой-нибудь намек на то, как это можно сделать?


person ihoryam    schedule 26.01.2016    source источник


Ответы (2)


Недавно мне пришлось попробовать использовать HTTP-прокси API Gateway для передачи HTTP-запроса AWS SigV4 в конечную точку. После тестирования и отладки выяснилось, что авторизация тратится и не проходит! Итак, при отправке запроса на API-шлюз - я отправил авторизацию и копию авторизации в виде другого заголовка «myauth». (Мне удалось это сделать, поскольку запрос исходит от моего собственного клиента.)

В запросе метода я добавил авторизацию и myauth в качестве заголовков HTTP Запрос метода - заголовки HTTP

В запросе интеграции - заголовки HTTP я сопоставил myauth с авторизацией до того, как он был перенаправлен на конечную точку.

Запрос на интеграцию - заголовки HTTP

Не знаю, лучший ли это способ сделать это или могут быть какие-то потенциальные проблемы, но это сработало! Надеюсь, это кому-то поможет или даст какие-то идеи.

person Karthik R    schedule 18.02.2020

API Gateway удаляет заголовок авторизации AWS SigV4 из соображений безопасности. Если вы используете другой механизм авторизации, такой как OAuth, заголовок не будет удален.

person Balaji    schedule 29.01.2016
comment
Так что я могу предположить, что передать заголовок авторизации невозможно? - person ihoryam; 30.01.2016
comment
@ user3384147: Извините за задержку с ответом. Можно передать заголовок авторизации, если вы используете любую авторизацию, кроме AWS SigV4. Когда вы используете SigV4, AWS использует заголовок авторизации и, следовательно, удаляет его. Какую авторизацию вы используете? - person Balaji; 31.03.2016
comment
Я пытаюсь защитить API, заставляя своих клиентов использовать URL-адрес конечной точки в boto, чтобы указать на мой APIGw, затем я перехватываю вызов и проверяю некоторые параметры, переданные в API (который IAM не поддерживает / не имеет никаких ключей условий на данный момент), я также проверю их sig4v (поскольку наша служба предоставила им ключи), если запрос выглядит нормально, я передам его в API, используя свою роль lambdas IAM для его фактического выполнения. Но для этого я бы предпочел увидеть Sigv4, иначе они не смогут использовать собственную инструментальную цепочку, такую ​​как awscli, для вызова службы, и им потребуется настраиваемая аутентификация для любой идеи? - person Brent; 27.10.2020