如何使用Amazon Congnito的Amazon PHP SDK验证用户


How to authenticate user with Amazon PHP SDK of Amazon Congnito

我使用ConfirmSignUp方法来确认用户,之后,我如何通过其电子邮件和密码验证用户?

$identityProvider = AWS::createClient('CognitoIdentityProvider');
$result = $identityProvider->confirmSignUp([
    'ClientId'         => 'MY_CLIENT_ID',
    'ConfirmationCode' => $code,
    'Username'         => $username
]);

我发现方法InitiateAuth,但它似乎不是。

在JS SDK示例(http://docs.aws.amazon.com/zh_cn/cognito/latest/developerguide/using-amazon-cognito-user-identity-pools-javascript-examples.html)中,JS可以使用以下代码验证用户:
var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
cognitoUser.authenticateUser(authenticationDetails, {
    onSuccess: function (result) {
        console.log('access token + ' + result.getAccessToken().getJwtToken());
    },
    onFailure: function(err) {
        alert(err);
    },
});

我使用Amazon PHP SDK (https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.CognitoIdentity.CognitoIdentityClient.html)。

PHP SDK有相同的方法吗?或者我在哪里可以找到一些关于它的文档?

目前Cognito不支持PHP的高级SDK。低级SDK可以通过调用下面提到的api来使用,

http://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.CognitoIdentityProvider.CognitoIdentityProviderClient.html

你可能想用ADMIN_NO_SRP_AUTH参数来代替调用InitiateAuth,这样你就不需要在PHP中做SRP计算了。用户池使用SRP来验证密码,其中的数学运算相当复杂。移动sdk为您处理它,但使用admin no srp认证绕过了它。