Я пытаюсь проверить конечную точку аутентифицированного API-шлюза от клиента-клиента. Как я могу генерировать/устанавливать заголовки авторизации "AWS_IAM" при выполнении запроса?
API-шлюз, как пройти авторизацию AWS IAM от клиента отдыха
Ответ 1
Вы можете использовать Cognito с идентификатором пула "public", а затем присоединить роль к идентификатору пула Cognito, роль которого связана с вашим API GATEWAY
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'REGION:YOUR_POOL_ID',
});
Используйте AWS STS для получения временных учетных данных с ограниченными привилегиями. После этого вы можете использовать API-шлюз с аутентификацией AWS_IAM
Сгенерированный SDK принимает учетные данные AMI, вы должны инициировать клиент с тем, который вы получили от STS:
var apigClient = apigClientFactory.newClient({
accessKey: 'ACCESS_KEY',
secretKey: 'SECRET_KEY',
sessionToken: 'SESSION_TOKEN', //OPTIONAL: If you are using temporary credentials you must include the session token
region: 'eu-west-1' // OPTIONAL: The region where the API is deployed, by default this parameter is set to us-east-1
});
Примечание. Строго минимальные роли в вашем пуле, то есть общедоступный идентификатор, каждый орган может использовать его для временного или фиксированного (для отслеживания пользователей через устройства) user_/app_ id.
Обновление апреля 2016 года: Для комментариев Кристины: Документация о том, как использовать STS.
TL; DR: В основном после того, как ваш провайдер Identity перезвонит вам (Google, в моем случае), у вас будет токен (OpenID, в моем случае), просто подайте его на STS:
AWS.config.credentials = new AWS.WebIdentityCredentials({
RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>',
ProviderId: 'graph.facebook.com|www.amazon.com', // Omit this for Google
WebIdentityToken: ACCESS_TOKEN
});
Ответ 2
Вам нужно будет реплицировать логику API Gateway
AWS v4 request signature
, чтобы это сделать. В идеале вы должны посмотреть на сгенерированный Javascript/Java SDK для вашего API, чтобы получить представление о том, как рассчитываются эти сигнатуры запроса. Я предлагаю вам отключить аутентификацию для ваших запросов на тестирование.