TsgcWSAPIServer_WebAuthn › Olaylar › OnWebAuthnAuthenticationGetCredential
Bir assertion doğrulanırken, tarayıcının kullandığı kimlik bilgisi ceremony'nin kimlik bilgisi listesinde yer almadığında tetiklenir (kullanıcı adsız oturum açma ve passkey otomatik doldurma), uygulama kimlik bilgisi kaydını kendi deposundan döndürür.
property OnWebAuthnAuthenticationGetCredential: TsgcWebAuthnOnAuthenticationGetCredential;
// TsgcWebAuthnOnAuthenticationGetCredential = procedure(Sender: TObject; const aCredentialId: String; const aCredentialRecord: TsgcWebAuthn_CredentialRecord; var Found: Boolean) of object
Atanmamış.
Tarayıcı bir authentication ceremony'yi yanıtladığında, sunucu kimlik bilgisini ceremony'nin kimlik bilgisi kayıtlarında arar; bunlar OnWebAuthnAuthenticationOptionsRequest tarafından döndürülenler veya dahili listede bulunanlardır. Kullanıcı adsız bir oturum açmada veya passkey otomatik doldurmasında bu liste genellikle boştur, bu nedenle sunucu bu olayı tarayıcının gönderdiği kimlik bilgisi kimliğiyle (aCredentialId, base64url) tetikler.
Kimlik bilgisini kendi deponuzda arayın, aCredentialRecord değerini doldurun (örneğin ReadJSON ve AsJSON'den OnWebAuthnRegistrationSuccessful içine kaydedilen JSON ile) ve Found değerini true olarak ayarlayın. Kayıt, UserId (kullanıcı tanıtıcısı) değerini korumalıdır; bu, yanıtın userHandle değeriyle karşılaştırılır. Found false olduğunda, kaydın CredentialId değeri aCredentialId değilse veya ceremony bir kullanıcı adıyla başlatılmışsa ve kaydın Username değeri farklıysa oturum açma başarısız olur. Bu olaydan sonra assertion, her zamanki gibi kaydın genel anahtarıyla doğrulanır.
Eksiksiz depolama modeli için Passkeys bölümüne bakın.
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;