Celem jest weryfikacja autentyczności i integralności danych zwróconych przez klienta, upewnienie się, że poświadczenie jest powiązane z oczekiwanym użytkownikiem, oraz bezpieczna rejestracja poświadczenia klucza publicznego do przyszłego uwierzytelniania.
Serwer musi zweryfikować odpowiedź klienta zgodnie z następującymi krokami:
{
"id": "base64url-encoded credential ID",
"rawId": "base64url-encoded ID bytes",
"response": {
"clientDataJSON": "base64url",
"attestationObject": "base64url"
},
"type": "public-key"
}
Jeśli odpowiedź wysłana przez klienta jest prawidłowa, wywoływane jest zdarzenie OnWebAuthnRegistrationSuccessful, a rekord poświadczeń można bezpiecznie zapisać w bazie danych do przyszłych walidacji logowania.
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;
W przypadku wystąpienia błędu podczas walidacji odpowiedzi klienta wywoływane jest zdarzenie OnWebAuthnRegistrationError, a przyczyna błędu jest dostępna w parametrze aError.
procedure OnWebAuthnRegistrationError(Sender:
TObject; const aRequest: TsgcWebAuthn_RegistrationVerify_Request; const
aRegistration: TsgcWebAuthn_Registration; const aError: string);
begin
Log('#webauthn_registration_error: ' + aError);
end;