подписать запрос к AWS API-шлюзу с Signature v4 от использования AWS токена Cognito - PullRequest
0 голосов
/ 11 марта 2020

Я создал AWS API-шлюз с аутентификацией = AWS_IAM для вызова лямбда-функции. Теперь, чтобы вызвать этот API, я понимаю, что мне нужно подписать запрос, и, как указано в документации AWS, правильный способ - добавить заголовок авторизации, рассчитанный с использованием AWS Signature V4, для которого требуются ключ доступа и секретный ключ. На моей клиентской стороне пользователь сначала проходит аутентификацию с помощью AWS Cognito и получает токены JWT (токен id id и токен refre sh), но я не могу найти в них access_key / secret _key. Как рассчитать AWS Signature V4 из токенов, полученных от AWS Cognito?

1 Ответ

0 голосов
/ 12 марта 2020

Я считаю, что вы не можете (с вероятностью 99 99999)!

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

Когда вы защищаете свой API О конечных точках шлюза с AWS_IAM вы говорите, что только удостоверения, которые AWS может распознать в своем собственном каталоге удостоверений (пользователи или роли), могут выполнять действия с ресурсом. В целом, пользователи, зарегистрированные в пулах пользователей Cognito, AWS не считаются действительными удостоверениями.

Чтобы пользователь пула пользователей Cognito считался действительным удостоверением AWS, у вас есть два варианта:

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

2 - используйте другой продукт AWS (с именем, которое создает путаницу) под названием Cognito Identity Pool . Эта служба оценивает, разрешен ли токен JWT в этом контексте (вы настраиваете его в Identity Pool). Если действительный токен из зарегистрированной директории идентификации, Cognito Identity Pool заменит ваш JWT-токен на AWS ключ доступа, AWS секретный ключ и AWS сессионный токен, связанный с указанной c ролью IAM. Затем вы можете использовать эти ключи для подписи вашего запроса. Но имейте в виду, что с этим изменением вы потеряете способность идентифицировать конкретного пользователя c в API-шлюзе и в последующих службах, вызываемых API-шлюзом. Если вам нужен токен JWT в ваших последующих сервисах, вы можете сделать это с небольшими дополнительными усилиями. Вы не можете найти здесь путь: { ссылка }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...