Как сохранить возвращаемые данные WebAuthn->processCreate в MySQLPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как сохранить возвращаемые данные WebAuthn->processCreate в MySQL

Сообщение Anonymous »

Я использую библиотеку WebAuthn от lbuchs. Имея файл server.php в тестовой папке, я могу создать ключ доступа и успешно войти в систему. Данные процессаCreate хранятся в сеансе, и когда я сохраняю их в базе данных, во время аутентификации происходит сбой входа в систему с сообщениями об ошибках, неверный открытый ключ или неверный запрос. Я использовал base64 для кодирования, но, похоже, ничего не работает, кроме данных сеанса. Есть ли способ сохранить данные в MySQL?
Это процесс getGetArgs
// Create Variables
$uID=mysqli_real_escape_string($conn,$userId);

// SS: Get user details
$sql="SELECT credential_id,auth_challenge FROM users WHERE uID='$uID'";
$stmt=mysqli_query($conn,$sql);
$row=mysqli_fetch_array($stmt);
if($row>0){
$credential=$row[0];
$getArgs = $WebAuthn->getGetArgs($credential, 60*4, $typeUsb, $typeNfc, $typeBle, $typeHyb, $typeInt, $userVerification);
}

Это процесс получения
// Create Variables
$clientDataJSON = base64_decode($post->clientDataJSON);
$authenticatorData = base64_decode($post->authenticatorData);
$signature = base64_decode($post->signature);
$userHandle = !empty($post->userHandle) ? base64_decode($post->userHandle) : null;
$id = !empty($post->id) ? base64_decode($post->id) : null;
$challenge = $_SESSION['challenge'] ?? null;
$uID=mysqli_real_escape_string($conn,$userHandle);

// SS: Get user details
$sql="SELECT credential_id,public_key,Profile,auth_challenge FROM users WHERE uID='$uID'";
$stmt=mysqli_query($conn,$sql);
$row=mysqli_fetch_array($stmt);
if($row>0){

// process the get request. throws WebAuthnException if it fails
$WebAuthn->processGet($clientDataJSON, $authenticatorData, $signature, $row['public_key'], $challenge, null, $userVerification === 'required');

Это процесс создания
$clientDataJSON = base64_decode($post->clientDataJSON);
$attestationObject = base64_decode($post->attestationObject);
$challenge=$_SESSION['challenge'] ?? null;

// SS: the process create
$data = $WebAuthn->processCreate($clientDataJSON, $attestationObject, $challenge, $userVerification === 'required', true, false);

// Create Variables
$uID=mysqli_real_escape_string($conn,$userId);
$credID=mysqli_real_escape_string($conn,$data->credentialId);
$pubKey=mysqli_real_escape_string($conn,$data->credentialPublicKey);

// SS: Save user credential and public key
$sql="UPDATE users SET credential_id='$credID', public_key='$pubKey',auth_challenge='$challenge' WHERE uID='$uID'";
$stmt=mysqli_query($conn,$sql);


Подробнее здесь: https://stackoverflow.com/questions/791 ... a-in-mysql
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»