TsgcWSAPIServer_WebAuthn › Olaylar › OnWebAuthnAuthenticationGetCredential

OnWebAuthnAuthenticationGetCredential Olay

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.

Sözdizimi

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

Varsayılan Değer

Atanmamış.

Açıklamalar

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.

Örnek

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;

Olaylara Dön