WebAuthn Registro | Resultado

El objetivo es verificar la autenticidad e integridad de los datos devueltos por el cliente, asegurarse de que la credencial está vinculada al usuario esperado y registrar de forma segura una credencial de clave pública para autenticaciones futuras.

 

El servidor debe validar la respuesta del cliente siguiendo estos pasos:

 

 

{
"id": "base64url-encoded credential ID",
"rawId": "base64url-encoded ID bytes",
"response": {
"clientDataJSON": "base64url",
"attestationObject": "base64url"
},
"type": "public-key"
}

 

 

 

Registro exitoso

Si la respuesta enviada por el cliente es válida, se llama al evento OnWebAuthnRegistrationSuccessful y el registro de credenciales puede almacenarse de forma segura en una base de datos para futuras validaciones de inicio de sesión.

 


procedure OnWebAuthnRegistrationSuccessful(Sender: TObject; const aRegistration: TsgcWebAuthn_Registration; 
  const aCredentialRecord: TsgcWebAuthn_CredentialRecord; var Accept: Boolean);
begin
  // store in a db
  DB.Credentials.Append;
  DB.Credentials.FieldByName('Credentials').AsString := aCredentialRecord.AsJSON;
  DB.Credentials.Post;
end;

Error de registro

Si se produce algún error al validar la respuesta del cliente, se llama al evento OnWebAuthnRegistrationError y puede acceder al motivo del error en el parámetro aError.

 


procedure OnWebAuthnRegistrationError(Sender:
    TObject; const aRequest: TsgcWebAuthn_RegistrationVerify_Request; const
    aRegistration: TsgcWebAuthn_Registration; const aError: string);
begin
  Log('#webauthn_registration_error: ' + aError);
end;