【发布时间】:2020-08-13 03:22:13
【问题描述】:
我正在尝试使用 AuthFlow USER_SRP_AUTH 进行用户登录。我在发起验证请求的响应中收到“PASSWORD_VERIFIER”质询。在回应这个挑战时,我不确定我应该传递什么作为PASSWORD_CLAIM_SIGNATURE 的值。我根据文档和 java 代码尝试了不同的值,但没有成功。
我将下面的代码用于respondToAuthChallenge 方法:
$date = date('D M d H:i:s T Y');
$srp = new Srp();
$a = $srp->getRandomSeed();
$A = $srp->generateA($a);
$challengeParameters = $result->get('ChallengeParameters');
$s = $srp->getRandomSeed();
$x = $srp->generateX($s, 'MY_USERNAME', 'MY_PASSWORD');
$S = $srp->generateS_Client($A, $challengeParameters['SRP_B'], $a, $x);
$K = $srp->generateK($S);
$response = $client->respondToAuthChallenge([
'ChallengeName' => 'PASSWORD_VERIFIER',
'ClientId' => 'CLIENT_ID',
'ChallengeResponses' => [
'TIMESTAMP' => $date,
'USERNAME' => $challengeParameters['USER_ID_FOR_SRP'],
'PASSWORD_CLAIM_SECRET_BLOCK' => $challengeParameters['SECRET_BLOCK'],
'PASSWORD_CLAIM_SIGNATURE' => hash_hmac('sha256', $K, $challengeParameters['SALT'])
]
]);
我用过这个 PHP SRP 客户端:https://github.com/falkmueller/srp/
在respondToAuthChallenge 请求的响应中,我收到此错误
400 Bad Request` response:
{"__type":"NotAuthorizedException","message":"Incorrect username or password."}
这个错误很可能是由不正确的PASSWORD_CLAIM_SIGNATURE 引起的。因为我还没有真正找到这个键应该包含什么值,只是根据我找到的文档和 java 代码尝试了一些东西。
【问题讨论】:
-
这个好运吗?你找到答案了吗?
-
Jenky 在 github 上发表了这条评论。 github.com/aws/aws-sdk-php/issues/1979#issuecomment-750739222这可能会有所帮助
标签: php amazon-cognito aws-php-sdk srp-protocol