Заголовки в API Gateway Authorization не читаются - PullRequest
0 голосов
/ 10 февраля 2020

Я реализовал лямбда-функцию для авторизации и получаю ошибки в своем тесте: заголовки пусты. Я мог бы проверить, что печать заголовков в консоли (Cloudwatch).

Это начало моего обработчика:

public class Authorizer implements RequestHandler<APIGatewayProxyRequestEvent, AuthorizerResponse> {

    public AuthorizerResponse handleRequest(APIGatewayProxyRequestEvent request, Context context) {
        Map<String, String> headers = request.getHeaders();
        System.out.println("headers: " + headers);
        String authorization = headers.get("Authorization");
...

И вот результат: enter image description here

Говоря об Авторизаторе, я настроил это следующим образом: enter image description here

И, наконец, я настроил свой шлюз Api следующим образом:

Запрос метода enter image description here

Запрос интеграции enter image description here

Что я не прав?

Заранее спасибо.

1 Ответ

0 голосов
/ 12 февраля 2020

Позвольте мне ответить на ваш вопрос здесь.

Вы используете лямбда-авторизатор типа TOKEN. Это передаст значение заголовка «Авторизация» как токен. Вы можете увидеть приведенный ниже пример данных о лямбда-событиях -

{ 
  type: 'TOKEN',
  methodArn:'arn:aws:execute-api:$AWS_REGION:$ACCOUNT_ID:$API_ID/$STAGE/$RESOURCE/',
  authorizationToken: 'allow' 
}

Возможно, вам придется изменить свой код соответствующим образом, чтобы получить этот токен.

В качестве альтернативы, вы можете использовать функцию авторизации на основе лямбда-выражения REQUEST. , Это отправит ввод в Lambda Authorizer в виде комбинации заголовков, параметров строки запроса, stageVariables и переменных $ context. Затем вы можете использовать существующий код для извлечения заголовков из запроса.

Что касается настройки шаблона отображения и заголовка «Авторизация» в запросе метода и запросе интеграции, вам это не нужно, если вы не планируете передать его в интеграционную лямбда-функцию.

...