TsgcWSAPIServer_WebAuthn › Gebeurtenissen › OnWebAuthnAuthenticationGetCredential

OnWebAuthnAuthenticationGetCredential Gebeurtenis

Treedt op tijdens het verifiëren van een assertion wanneer de credential die door de browser wordt gebruikt niet in de credentiallijst van de ceremonie staat (gebruikersnaamloze aanmelding en passkey-autofill); de toepassing retourneert de credentialrecord uit de eigen opslag.

Syntaxis

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

Standaardwaarde

Niet toegewezen.

Opmerkingen

Wanneer de browser antwoordt op een authenticatieceremonie, zoekt de server de credential in de credentialrecords van de ceremonie, de records die door OnWebAuthnAuthenticationOptionsRequest zijn geretourneerd of in de interne lijst zijn gevonden. Bij een gebruikersnaamloze aanmelding of met passkey-autofill is die lijst meestal leeg, dus activeert de server deze event met het credential-ID dat door de browser is verzonden (aCredentialId, base64url).

Zoek de credential op in uw opslag, vul aCredentialRecord in (bijvoorbeeld met ReadJSON en de JSON die is opgeslagen vanuit AsJSON in OnWebAuthnRegistrationSuccessful) en stel Found in op true. De record moet de eigen UserId (user handle) behouden, die wordt vergeleken met de userHandle van de respons. De aanmelding mislukt wanneer Found false is, wanneer de CredentialId van de record niet aCredentialId is, of wanneer de ceremonie is gestart met een gebruikersnaam en de Username van de record afwijkt. Na deze event wordt de assertion zoals gebruikelijk geverifieerd met de publieke sleutel van de record.

Zie Passkeys voor het volledige opslagpatroon.

Voorbeeld

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;

Terug naar Events