需要AWS API-Gateway身份验证标头

时间:2018-06-15 09:28:01

标签: amazon-web-services authentication

以下是我的情景:

通过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。

1 个答案:

答案 0 :(得分:0)

我不熟悉PHP,但我知道你需要SignatureV4签名请求......这不是你想要的吗? https://github.com/aws/aws-sdk-php/blob/master/src/Signature/SignatureV4.php#L42