TsgcWSAPIServer_WebAuthn › Zdarzenia › OnWebAuthnAuthenticationGetCredential
Wywoływane podczas weryfikacji asercji, gdy poświadczenie użyte przez przeglądarkę nie znajduje się na liście poświadczeń ceremonii (logowanie bez nazwy użytkownika i autouzupełnianie kluczem dostępu); aplikacja zwraca rekord poświadczenia z własnego magazynu.
property OnWebAuthnAuthenticationGetCredential: TsgcWebAuthnOnAuthenticationGetCredential;
// TsgcWebAuthnOnAuthenticationGetCredential = procedure(Sender: TObject; const aCredentialId: String; const aCredentialRecord: TsgcWebAuthn_CredentialRecord; var Found: Boolean) of object
Nieprzypisane.
Gdy przeglądarka odpowiada na ceremonię uwierzytelniania, serwer szuka poświadczenia w rekordach poświadczeń ceremonii, tych zwróconych przez OnWebAuthnAuthenticationOptionsRequest lub znalezionych na wewnętrznej liście. Przy logowaniu bez nazwy użytkownika lub z autouzupełnianiem kluczem dostępu ta lista jest zwykle pusta, więc serwer wywołuje to zdarzenie z identyfikatorem poświadczenia wysłanym przez przeglądarkę (aCredentialId, base64url).
Wyszukaj poświadczenie w swoim magazynie, wypełnij aCredentialRecord (na przykład za pomocą ReadJSON i JSON zapisanego z AsJSON w OnWebAuthnRegistrationSuccessful) i ustaw Found na true. Rekord musi zachować swój UserId (uchwyt użytkownika), który jest porównywany z userHandle odpowiedzi. Logowanie kończy się niepowodzeniem, gdy Found ma wartość false, gdy CredentialId rekordu nie jest równe aCredentialId, lub gdy ceremonia została rozpoczęta z nazwą użytkownika, a Username rekordu jest inne. Po tym zdarzeniu asercja jest weryfikowana kluczem publicznym rekordu jak zwykle.
Zobacz Passkeys, aby poznać kompletny wzorzec przechowywania.
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;