Невозможно протестировать вызов API-шлюза с аутентификацией Cognito в Postman (его пул ADMIN_NO_SRP_AUTH) - PullRequest
0 голосов
/ 12 мая 2019

Мне удалось успешно войти в API-шлюз, который я сделал через мое устройство iOS и Cognito. Проблема в том, что я хотел бы использовать почтальон для проверки вызовов API, а затем реализовать их на телефоне. В настоящее время Почтальон не может аутентифицироваться (несмотря на то, что AWS говорит, что может). Независимо от того, что я делаю, я получаю ошибку 401 (видно на скриншотах)

Что я пробовал

Скачал коллекцию почтальонов из AWS Api Gateway enter image description here

Затем импортируйте его в почтальон и переключите аутентификацию на «Подпись AWS» enter image description here

А вот снимок экрана с информацией о заголовке почтальона enter image description here

Ответы [ 2 ]

1 голос
/ 12 мая 2019

Если я правильно понимаю, вы пытаетесь вызвать конечную точку шлюза API, которая находится за встроенным Cognito Authoriser.

Я думаю, вы неправильно поняли, как вы называете Cognito Authorized API Gateway:

  1. Авторизуйтесь против Cognito, чтобы получить id_token
  2. Call API Gateway с заголовком Authorization, установленным в id_token
  3. Обновление id_token каждый час

Включив ADMIN_NO_SRP_AUTH, вы позволяете упростить первый шаг (вход в Cognito), чтобы вам было проще выполнять его вручную. (Если бы вы этого не сделали, вам нужно было бы SRP вычислить).

Один из способов получить id_token - использовать aws cli (дальнейшие способы указаны в документации ):

aws cognito-idp admin-initiate-auth --user-pool-id='[USER_POOL_ID]' --client-id='[CLIENT_ID]' --auth-flow=ADMIN_NO_SRP_AUTH --auth-parameters="USERNAME=[USERNAME],PASSWORD=[PASSWORD]"

Затем можно использовать результат (AuthenticationResult.IdToken) в качестве заголовка Authorization в Postman (нет необходимости в подписи AWS v4, то есть только для аутентификации IAM).

n.b. более полное объяснение с изображениями можно найти здесь .

0 голосов
/ 12 мая 2019

Вот то, что я наконец-то сделал, чтобы исправить проблемы с аутентификацией почтальона

1) Отключено App Client Secret в пуле Cognito.

2) Ран aws --region us-east-1 cognito-idp admin-initiate-auth --cli-input-json file://gettoken.json

Пример файла JSON

{
"UserPoolId": "us-east-1_**********", 
"ClientId": "******************", 
"AuthFlow": "ADMIN_NO_SRP_AUTH",

    "AuthParameters": {
        "USERNAME": "*********",
        "PASSWORD": "***********"
    }    
}

3) Отправлено Почтальон> Авторизация> Носитель Скопировал значение idToken в поле токена и все заработало.enter image description here

ПРИМЕЧАНИЕ. Для тех, кто интересуется, не использовать ли секретный ключ клиента, безопасно. См. Эту статью.

...