以下是我的情景:
通过Cognito设置了UserPool和IdentityPool。我还有一个API-Gateway端点,其配置为使用AWS_AIM进行身份验证。
首先,我使用用户名和密码将用户登录到Cognito UserPool。我收到的回复是肯定的,如下所示:
[AuthenticationResult] => Array
(
[AccessToken] => <AccessToken>
[ExpiresIn] => 3600
[TokenType] => Bearer
[RefreshToken] => <RefreshToken>
[IdToken] => <IdToken>
)
使用此信息,我使用Cognito IdentityPool授权用户。我收到的回复是肯定的,如下所示:
[IdentityId] => <IdentityId>
[Credentials] => Array
(
[AccessKeyId] => <AccessKeyId>
[SecretKey] => <SecretKey>
[SessionToken] => <SessionToken>
[Expiration] => Aws\Api\DateTimeResult Object
(
[date] => 2018-06-15 09:11:32.000000
[timezone_type] => 1
[timezone] => +00:00
)
)
这就是我被困的地方。我需要以下标头才能向API-Gateway端点发出实际请求:
Authorization: AWS4-HMAC-SHA256
Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request,
SignedHeaders=host;range;x-amz-date,
签名= fe5f80f77d5fa3beca038a248ff027d0445342fe2855ddc963176630326f1024
但是对于我的生活,我找不到生成这些标题的方法。而针对Javascript和PHP的AWS SDK文档集并不是特别清楚要做什么。所以我的geuss是我错过了某个地方。有没有人知道如何正确生成这些标题?最好使用PHP。
答案 0 :(得分:0)
我不熟悉PHP,但我知道你需要SignatureV4签名请求......这不是你想要的吗? https://github.com/aws/aws-sdk-php/blob/master/src/Signature/SignatureV4.php#L42