#amazon-web-services #sdk #amazon-cognito #aws-userpools
#amazon-web-services #sdk #amazon-cognito #aws-пользовательские бассейны
Вопрос:
У меня есть пул удостоверений, который имеет роль аутентификации. Одна из политик для этой роли заключается в предоставлении полного доступа по вызову к конечным точкам шлюза API. Когда я создаю временные учетные данные с помощью AWS.config.credentials.get()
, я создаю экземпляр клиента API Gateway следующим образом.
AWS.config.region = 'us-east-1';
var newClientCredentials = {
accessKey: accessKey,
secretKey: secretKey
};
apiClient = apigClientFactory.newClient(newClientCredentials);
apiClient.myendpointPost({}, postRequest, requestParams).then(function(result) {console.log(result)});
Я дважды проверил, что они установлены accessKey
и secretKey
. Когда я совершаю вызов с помощью apiClient
своей конечной точки, я получаю unauthorized
ответ от шлюза.
Мои вопросы:
- Есть ли способ проверить, что временные учетные данные (
accessKey
иsecretKey
) относятся к соответствующей роли, прошедшей проверку подлинности? - Возможно ли выяснить, почему API Gateway отклоняет эти учетные данные (возможно, что-то, что я могу зарегистрировать в CloudWatch)?
Комментарии:
1. вы должны передать токен сеанса вместе с ключом доступа и секретным ключом
Ответ №1:
Как указал Ninad в комментариях, я забыл передать в сеансе также ключи. Однако один ключевой шаг, который я пропустил, заключался в том, что для авторизации на конечной точке, к которой я обращался, должно было быть установлено значение AWS_IAM
. Ранее я установил для него значение Cognito и указал на пул пользователей, что было неверно.