веб-сервисы amazon — обработка аутентификации SRP и генерация ключа устройства (на стороне сервера)

Я реализовал в своем бэкэнде Cognito с регистрацией и входом в систему, активацией и деактивацией MFA, но теперь я хочу реализовать запоминающие устройства, чтобы уменьшить количество SMS-подтверждений.

Для этого я настроил функцию InitiateAuth следующим кодом:

$client->initiateAuth([
'AuthFlow' => 'USER_SRP_AUTH', // REQUIRED
'AuthParameters' => [
"USERNAME" => $email,
"PASSWORD" => $password,
"SRP_A" => $bigA,
],
'ClientId' => $this->getClientId(), // REQUIRED
]);

Эта функция работает правильно и возвращает код в следующем изображении:

https://i.gyazo.com/a439e48e2de85a094f56ed4cfee10f83.png

Затем я продолжаю генерировать значения SRP и вызываю функцию responseToAuthChallenge со следующим кодом:

$client->respondToAuthChallenge([
'ChallengeName' => 'DEVICE_SRP_AUTH',
'ChallengeResponses' => [
'USERNAME' => $username,
'SRP_A' => $bigA,
],
'ClientId' => $this->getClientId(),
]);

Тем не менее, он возвращает мне сообщение об ошибке: «Отсутствует обязательный параметр DEVICE_KEY».

Если я помещаю ключ DEVICE_KEY в ChallengeResponses, он начинает возвращать мне ошибку «Устройство не существует».

Я много искал и не могу найти способ сгенерировать DEVICE_KEY. Я пытался с уникальным идентификатором и отправив его в обоих initiateAuthand responseToAuthChallenge, но ошибка та же.

Любая подсказка, как я могу это сделать? Я полагаю, что код SRP еще не на 100%, поскольку все еще понимает концепцию, но не может понять часть DEVICE_KEY.

Спасибо

4

Решение

Похоже, вы должны использовать Поток аутентификации на стороне сервера

Для серверных приложений аутентификация пула пользователей аналогична аутентификации для клиентских приложений, за исключением:

  • Серверное приложение вызывает AdminInitiateAuth API (вместо InitiateAuth). Этот метод требует учетных данных администратора AWS. Этот метод возвращает параметры аутентификации.

  • Как только у него есть параметры аутентификации, приложение вызывает AdminRespondToAuthChallenge API (вместо RespondToAuthChallenge), который также требует учетных данных администратора AWS.

AdminInitiateAuth возвращает среди прочего ключ устройства.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]