Registro WebAuthn | Resultado

O objetivo é verificar a autenticidade e a integridade dos dados retornados pelo cliente, garantir que a credencial esteja vinculada ao usuário esperado e registrar com segurança uma credencial de chave pública para autenticação futura.

 

O servidor deve validar a resposta do cliente seguindo estes passos:

 

 

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

 

 

 

Registro Bem-sucedido

Se a resposta enviada pelo cliente for válida, o evento OnWebAuthnRegistrationSuccessful é chamado e o Credential Record pode ser armazenado com segurança em um banco de dados para validações de login futuras.

 


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;

Registration Error

Se houver algum erro ao validar a resposta do cliente, o evento OnWebAuthnRegistrationError é chamado e você pode acessar o motivo do erro no 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;