Доступ к AWS API Gateway из Axios - PullRequest
0 голосов
/ 20 марта 2019

Я пытаюсь получить доступ к службам AWS API, размещенным на шлюзе, из Axios.Используя AWS Amplify, я получаю токен с помощью Auth.currentSession (), который доставляет CognitoIdToken .В этот объект встроен jwtToken.Я пытался вызвать мои защищенные сервисы (для авторизатора установлено значение AWS_IAM), используя этот jwtToken в заголовке HTTP, пробуя оба ключа Authorization и x-api-key , оба безрадость.Учитывая CognitoIdToken / jwtToken, как вы называете сервис AWS API Gateway с авторизатором AWS_IAM?

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Я использую шлюзы API вместе с Cognito для авторизации для моего приложения Vuejs. Вы можете использовать следующие шаги, чтобы настроить его легко.

  1. Выберите ваш API и перейдите к опции Авторизаторы на левой панели. Нажмите «Создать новый авторизатор». Затем выберите cognito и добавьте туда свой пул пользователей Cognito. Назовите свой источник токенов как «Авторизация». Оставьте проверку токена пустой. Нажмите на сохранить.
  2. Вы можете проверить свой новый авторизатор, используя токен JWT. Вы можете напечатать токен JWT на консоли, когда войдете в систему с помощью AWS ampify и будете использовать этот токен для тестирования API-авторизатора. Если вы получаете информацию о пользователе из пула Cognito, ваш Authorizer успешно настроен.
  3. Следующий важный шаг - передача информации об авторизованном пользователе из API в Lambda. Вы должны настроить это в запросе Интеграции в вашем методе ресурса. Для этого выберите свой метод в API-шлюзе и нажмите «Запрос на интеграцию», затем нажмите «Шаблоны сопоставления», который является последним вариантом. После того, как вы нажмете, выберите 2-й переключатель «Когда не определены шаблоны (рекомендуется)». После этого в типе контента нажмите «Добавить шаблон сопоставления» и дайте этому шаблону имя «application / json». Выберите этот шаблон и в нижней части экрана вы увидите окно. В этом поле вам нужно написать шаблон для получения данных о пользователе Cognito. Вы можете ссылаться на следующий шаблон.
#set($inputRoot = $input.path('$'))
{
    "cognitoUsername": "$context.authorizer.claims.email"
}

Вы можете перейти по этой ссылке, чтобы получить более подробную информацию о шаблоне в AWS https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html

Надеюсь, это поможет.

0 голосов
/ 20 марта 2019

Если вы используете аутентификацию AWS_IAM, вам нужно использовать AWS SigV4 с вашим ключом доступа, секретным ключом и ключом сеанса, которые ваш cognito пользователь получает в рамках своей авторизации.

Если вы хотите использовать cognito JWT в качестве механизма аутентификации, вам нужно изменить код для использования аутентификации cognito на уровне шлюза API.

...