Использование федеративной идентификации Cognito с API Gateway и почтальоном - PullRequest
0 голосов
/ 26 ноября 2018

Моя цель состоит в том, чтобы мой пользователь выполнил вход с помощью Cognito и получил временную роль IAM, которая предоставляет ему HTTP-доступ к определенным методам в API Gateway.

Что я уже сделал:

  • настройка моего пула пользователей
  • настройка моего пула удостоверений
  • настройка ролей IAM для аутентифицированных и не прошедших проверку пользователей

  • создать группу с ролью IAM, разрешающей доступ к POST для (в настоящее время) всех методов шлюза API.

  • поместить моего пользователя в группу

  • настроить метод API-шлюза на использование IAM авторизации

Я могу войти через Cognito в своем браузере, используя интерфейс, созданный с помощью Amplify.

Когда я проверяю в браузере локальное хранилище, я вижу следующее:

  • idToken
  • accessToken
  • refreshToken

Когда я сделал это с помощью авторизатора COGNITO на API-шлюзе, все, что мне нужно было сделать в Postman, это добавить заголовок Authorization и вставитьв idToken.Это дало мне доступ к API.

Как я могу протестировать мой API, используя Postman с авторизацией IAM?

Мне все еще выдаются токены, но теперь я вставляю их в заголовок Authorizationвыдает мне сообщение об ошибке:

Authorization header requires 'Credential' parameter. Authorization header requires 'Signature' parameter. Authorization header requires 'SignedHeaders' parameter. Authorization header requires existence of either a 'X-Amz-Date' or a 'Date' header.

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

Даже если я могу это сделать, как я могу проверить в Почтальоне, или это больше невозможно?

1 Ответ

0 голосов
/ 28 ноября 2018

Хорошо, запросы по-прежнему можно отправлять через Почтальон, но они должны быть в формате Amazon Sigv4.

Решение заключается в следующем.

  1. Получить accessKey, secretKey и sessionToken, возвращенные из процесса входа в систему *.

  2. В Postman для запроса выберите вкладку Authorization и для type выберите AWS Signature.

  3. Введите accessKey, secretKey и sessionToken, полученные с шага 1, в соответствующие поля в Почтальоне.

  4. Вам также нужно установить AWS Region например eu-central-1.

  5. Нажмите SEND.

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

* Я добавил временный код в свое приложение React / Amplify, чтобысделай это.

...