当我使用以下代码时:
$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
?
答案 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。