Тест метода AWS API Gateway: Ошибка Авторизация не настроена

Я создал RESTful API на AWS и пытаюсь протестировать метод POST. Я даю образец запроса в тело запроса в тестовом интерфейсе консоли API Gatemway, он получает этот ответ:

{
  "Error": "Authorization not configured",
  "Reference": "e6b7ec86-97fe-11e7-b480-ebefe7f11420"
}

Первоначально у меня был установлен пул пользователей Cognito с доступом для чтения/записи к соответствующей таблице, но я получил это сообщение об ошибке. Я попытался удалить авторизацию в методе, чтобы проверить это, но снова получил эту ошибку.

Насколько я могу судить, у меня настроена авторизация по всем направлениям.

  • Создана роль IAM для добавления, обновления, запроса и удаления из таблицы (trusted entities: AWS service: lambda) и AWSLambdaBasicExecutionRole
  • Лямбда-функция, использующая существующую (вышеупомянутую) роль
  • авторизатор, созданный с использованием моего пула пользователей для авторизации
  • ресурс и метод (POST), созданные с помощью авторизатора пула пользователей cognito сверху

Я чувствую, что, должно быть, упускаю что-то очевидное, но, кажется, все в порядке, когда я прохожу это здесь. Любая помощь очень ценится, и, пожалуйста, дайте мне знать, если я могу предоставить любую дополнительную информацию.


person Justin Kruse    schedule 12.09.2017    source источник
comment
Пробовали ли вы добавить шлюз API в качестве одного из триггеров функции Lambda?   -  person Toby Beresford    schedule 16.03.2018


Ответы (5)


Я нашел ссылку на этот вопрос на форумах AWS. столкнулся с этой же проблемой при прохождении учебника Wild Rydes.

Я смог решить эту проблему:

  1. В настройках API в разделе «Ресурсы» нажмите метод «POST», затем нажмите «Запрос метода».

введите описание изображения здесь

  1. В настройках запроса метода щелкните значок редактирования для «Авторизация».

введите описание изображения здесь

  1. Выберите пул Cognito.

введите описание изображения здесь

  1. Щелкните значок проверки, чтобы сохранить изменение.

введите описание изображения здесь

После внесения изменений в запросе метода больше не должно быть указано «Нет» для аутентификации.

введите описание изображения здесь

  1. Повторно разверните API.

введите описание изображения здесь

person imjosh    schedule 30.12.2017
comment
Хорошо, я забыл повторно развернуть API после изменения свойства Auth. - person Vallerious; 22.11.2019
comment
спасибо за вашу помощь!, это работает! - person lwz7512; 22.02.2021

Если у кого-то еще есть эта проблема, мне просто нужно очистить кэшированные данные в моем браузере, чтобы он работал.

person Shaun    schedule 08.11.2019

Что ж, я понял это после просмотра учебника WildRydes и лямбда-теста. Мне нужно было установить заголовок Authorization на токен JWT текущего пользователя. Я сделал это с помощью следующей функции:

getCurrentAuthToken: function (userPool) {
  return new Promise(function fetchCurrentAuthToken (resolve, reject) 
    let cognitoUser = userPool.getCurrentUser()

    if (cognitoUser) {
      cognitoUser
        .getSession(function sessionCallback (err, session) {
          if (err) {
            reject(err)
          } else if (!session.isValid()) {
            resolve(null)
          } else {
            resolve(session.getIdToken().getJwtToken())
          }
        })
    } else {
      resolve(null)
    }
  })
}

и используйте возвращенное значение обещания, чтобы установить заголовок Authorization в моем запросе.

person Justin Kruse    schedule 12.09.2017
comment
Где мне нужно поместить эту функцию? - person sitting-duck; 12.06.2019

Я просмотрел немецкую версию этого руководства, и они также перевели значение источника токена, что на данный момент неверно.
Мне просто нужно было изменить источник токена в API Gateway на английскую фразу Authorization и выполнить развертывание. снова API, и это сработало.

person m13r    schedule 16.05.2020

У меня были проблемы, пока я не установил для аутентификации значение none в запросе метода OPTIONS.

Выберите ОПЦИИ слева, затем нажмите Запрос метода. Убедитесь, что для параметра Авторизация установлено значение НЕТ. Не забудьте развернуть изменения.

person user14994164    schedule 12.01.2021