Tuesday, 24 July 2018

Handling SRP Auth and Generating Device Key (PHP - Server side)

I've implemented in my backend Cognito with Signup and Login, MFA activation and inactivation, but now I want to implement the remember devices, to reduce SMS confirmation.

For that, I've adjusted the InitiateAuth Function to the following code:

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

This function runs properly, and returns the code in following image:

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

Then, I continue generating SRP Values, and call in the function respondToAuthChallenge, with the following code:

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

Yet, It returns me an error saying: 'Missing required parameter DEVICE_KEY'.

If I put a DEVICE_KEY key inside ChallengeResponses it starts returning me the error 'Device does not exist.'

I've searched a lot and cannot find a way to generate the DEVICE_KEY. I've tried with unique ID and sending it in both initiateAuthand respondToAuthChallenge but the error is the same.

Any clue how can I do it? I Believe that SRP code is not 100% yet, as still understanding the concept, yet, cannot understand the DEVICE_KEY part.

Thanks



from Handling SRP Auth and Generating Device Key (PHP - Server side)

No comments:

Post a Comment