TsgcWSAPIServer_WebAuthn › Ereignisse › OnWebAuthnAuthenticationGetCredential

OnWebAuthnAuthenticationGetCredential Ereignis

Wird bei der Prüfung einer Assertion ausgelöst, wenn das vom Browser verwendete Credential nicht in der Credential-Liste der Zeremonie enthalten ist (Anmeldung ohne Benutzernamen und Passkey-Autofill); die Anwendung gibt den Credential-Datensatz aus ihrem eigenen Speicher zurück.

Syntax

property OnWebAuthnAuthenticationGetCredential: TsgcWebAuthnOnAuthenticationGetCredential;
// TsgcWebAuthnOnAuthenticationGetCredential = procedure(Sender: TObject; const aCredentialId: String; const aCredentialRecord: TsgcWebAuthn_CredentialRecord; var Found: Boolean) of object

Standardwert

Nicht zugewiesen.

Hinweise

Wenn der Browser eine Authentifizierungszeremonie beantwortet, sucht der Server das Credential in den Credential-Datensätzen der Zeremonie, den von OnWebAuthnAuthenticationOptionsRequest zurückgegebenen oder in der internen Liste gefundenen. Bei einer Anmeldung ohne Benutzernamen oder mit Passkey-Autofill ist diese Liste üblicherweise leer, sodass der Server dieses Ereignis mit der vom Browser gesendeten Credential-ID auslöst (aCredentialId, base64url).

Suchen Sie das Credential in Ihrem Speicher, füllen Sie aCredentialRecord (zum Beispiel mit ReadJSON und dem aus AsJSON in OnWebAuthnRegistrationSuccessful gespeicherten JSON) und setzen Sie Found auf true. Der Datensatz muss sein UserId (User Handle) behalten, das mit dem userHandle der Antwort verglichen wird. Die Anmeldung schlägt fehl, wenn Found false ist, wenn das CredentialId des Datensatzes nicht aCredentialId ist, oder wenn die Zeremonie mit einem Benutzernamen gestartet wurde und der Username des Datensatzes abweicht. Nach diesem Ereignis wird die Assertion wie üblich mit dem öffentlichen Schlüssel des Datensatzes verifiziert.

Das vollständige Speichermuster finden Sie unter Passkeys.

Beispiel

procedure TForm1.sgcWSAPIServer_WebAuthn1WebAuthnAuthenticationGetCredential(
  Sender: TObject; const aCredentialId: String;
  const aCredentialRecord: TsgcWebAuthn_CredentialRecord; var Found: Boolean);
var
  vJSON: string;
begin
  Found := DBFindPasskey(aCredentialId, vJSON);
  if Found then
    aCredentialRecord.ReadJSON(vJSON);
end;

Zurück zu Ereignissen