如何处理AWS认知的NEW_PASSWORD_REQUIRED挑战

时间:2019-03-20 13:48:32

标签: php laravel aws-sdk amazon-cognito aws-php-sdk

当我使用以下代码时:

$result = $this->client->adminInitiateAuth([
                'AuthFlow' => 'ADMIN_NO_SRP_AUTH',
                'ClientId' => $this->client_id,
                'UserPoolId' => $this->userpool_id,
                'AuthParameters' => [
                    'USERNAME' => $username,
                    'PASSWORD' => $password,
                ],
            ]);

我收到session challengeName :NEW_PASSWORD_REQUIRED 的回复。由此可见如何在AWS-cognito中生成AccessToken

2 个答案:

答案 0 :(得分:1)

您可以使用respondToAuthChallenge方法来设置用户的新密码并登录。它还应该为您返回accessToken

您可以执行以下操作:

$result = $this->client->respondToAuthChallenge([
            'ChallengeName' => 'NEW_PASSWORD_REQUIRED',
            'ClientId' => $this->client_id,
            'ChallengeResponses' => [
                'USERNAME' => $username,
                'NEW_PASSWORD' => $password,
            ],
            'Session' => $session,
        ]);

答案 1 :(得分:0)

您需要使用adminInitiateAuth方法返回的会话来响应此挑战(respondToAuthChallenge)。该会话是响应的关键,因为此时用户尚未登录,并且有效期为3分钟。之后,您将重新获得(如果会话有效)RefreshToken,AccessToken和IdToken。