Amaç, istemci tarafından döndürülen verilerin gerçekliğini ve bütünlüğünü doğrulamak, kimlik bilgisinin beklenen kullanıcıya bağlı olduğundan emin olmak ve gelecekteki kimlik doğrulama için bir genel anahtar kimlik bilgisini güvenli bir şekilde kaydetmektir.
Sunucu, istemci yanıtını şu adımları izleyerek doğrulamalıdır:
{
"id": "base64url-encoded credential ID",
"rawId": "base64url-encoded ID bytes",
"response": {
"clientDataJSON": "base64url",
"attestationObject": "base64url"
},
"type": "public-key"
}
İstemci tarafından gönderilen yanıt geçerliyse, OnWebAuthnRegistrationSuccessful olayı çağrılır ve Credential Record gelecekteki oturum açma doğrulamaları için güvenli bir şekilde bir veritabanına saklanabilir.
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;
İstemci yanıtını doğrularken herhangi bir hata olursa, OnWebAuthnRegistrationError olayı çağrılır ve hatanın nedenine aError parametresinde erişebilirsiniz.
procedure OnWebAuthnRegistrationError(Sender:
TObject; const aRequest: TsgcWebAuthn_RegistrationVerify_Request; const
aRegistration: TsgcWebAuthn_Registration; const aError: string);
begin
Log('#webauthn_registration_error: ' + aError);
end;