gpt4 book ai didi

php - 无法在 PHP 中为 Cognito 生成正确的 PASSWORD_CLAIM_SIGNATURE

转载 作者:行者123 更新时间:2023-12-03 20:54:07 25 4
gpt4 key购买 nike

我正在尝试使用 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 代码尝试了一些东西。

最佳答案

PASSWORD_CLAIM_SIGNATURE基于 off 似乎没有任何地方记录,但查看我派生的一些 AWS 源代码。
将以下内容连接成一个字符串:

  • Cognito 用户池 ID,不包含区域
  • 来自上次调用的 USER_ID_FOR_SRP
  • 来自上一次调用的 SECRET_BLOCK
  • 时间戳

  • 然后在该字符串上执行 hmac sha 256 。
    请注意,TIMESTAMP 有一种格式(也未记录):

    TIMESTAMP format should be EEE MMM d HH:mm:ss z yyyy in english.


    来源: this file 的第 299 行

    关于php - 无法在 PHP 中为 Cognito 生成正确的 PASSWORD_CLAIM_SIGNATURE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61495005/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com