Не удалось сгенерировать правильный PASSWORD_CLAIM_SIGNATURE в PHP для Cognito - PullRequest
1 голос
/ 29 апреля 2020

Я пытаюсь использовать AuthFlow USER_SRP_AUTH для входа в систему. Я получаю вызов "PASSWORD_VERIFIER" в ответ на запрос initiateAuth. Отвечая на этот вызов, я не уверен, что я должен передать в качестве значения 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 кода, который я нашел.

...