WebAuthn-server voor Delphi

Voeg wachtwoordloze authenticatie op basis van passkeys toe aan je Delphi-server. WebAuthn Level 2 / FIDO2 registratie- en authenticatieprocedures, attestation-verificatie en hooks voor de opslag van credentials.

TsgcWSAPIServer_WebAuthn

Implementeert de WebAuthn-relying-party-serverkant — maakt credential-challenges aan, verifieert navigator.credentials-responses, parseert attestation-statements en valideert assertion-handtekeningen.

Component-class

TsgcWSAPIServer_WebAuthn

Platforms

Windows, macOS, Linux, iOS, Android

Editie

Enterprise

Mount de relying party en bewaar credentials

Plaats een TsgcWSAPIServer_WebAuthn op een TsgcWebSocketHTTPServer, stel WebAuthnOptions.RelyingParty in, en handel vervolgens OnWebAuthnRegistrationSuccessful af om elke nieuwe passkey te bewaren en OnWebAuthnAuthenticationGetCredential om hem weer op te halen bij het aanmelden.

uses
  sgcWebSocket, sgcWebSocket_Server_APIs, sgcWebAuthn_Classes;

// Server: TsgcWebSocketHTTPServer en WebAuthn: TsgcWSAPIServer_WebAuthn zijn form-velden
procedure TForm1.StartServer;
begin
  Server := TsgcWebSocketHTTPServer.Create(nil);
  Server.Port := 8443;
  Server.SSL  := True;
  Server.SSLOptions.CertFile := 'server.pem';
  Server.SSLOptions.KeyFile  := 'server.pem';
  Server.SSLOptions.Port     := 8443;

  WebAuthn := TsgcWSAPIServer_WebAuthn.Create(nil);
  WebAuthn.Server := Server;
  WebAuthn.WebAuthnOptions.RelyingParty := 'example.com';
  WebAuthn.OnWebAuthnRegistrationSuccessful := OnRegistrationSuccessful;
  WebAuthn.OnWebAuthnAuthenticationGetCredential := OnGetCredential;

  Server.Active := True;
end;

procedure TForm1.OnRegistrationSuccessful(Sender: TObject;
  const aRegistration: TsgcWebAuthn_Registration;
  const aCredentialRecord: TsgcWebAuthn_CredentialRecord; var Accept: Boolean);
begin
  // bewaar de nieuwe passkey in je eigen database
  SaveCredential(aCredentialRecord.CredentialId, aCredentialRecord.AsJSON);
end;

procedure TForm1.OnGetCredential(Sender: TObject; const aCredentialId: string;
  const aCredentialRecord: TsgcWebAuthn_CredentialRecord; var Found: Boolean);
var
  vJSON: string;
begin
  // aanmelden: haal de bewaarde passkey weer op
  vJSON := LoadCredential(aCredentialId);
  Found := vJSON <> '';
  if Found then
    aCredentialRecord.ReadJSON(vJSON);
end;
// uses: sgcWebSocket, sgcWebSocket_Server_APIs
TsgcWebSocketHTTPServer *Server = new TsgcWebSocketHTTPServer(this);
TsgcWSAPIServer_WebAuthn *WebAuthn = new TsgcWSAPIServer_WebAuthn(this);
WebAuthn->Server = Server;
WebAuthn->WebAuthnOptions->RelyingParty = "example.com";
Server->Active = true;

Wat zit erin

Een relying-party-server die een Delphi-proces verandert in een passkey-bewust authenticatie-endpoint.

Registratieceremonie

OnWebAuthnRegistrationOptionsRequest accepteert het verzoek om PublicKeyCredentialCreationOptions; de browser roept navigator.credentials.create() aan; de server valideert de attestation en OnWebAuthnRegistrationSuccessful geeft het nieuwe credential-record terug.

Authenticatieceremonie

OnWebAuthnAuthenticationOptionsRequest vult PublicKeyCredentialRequestOptions met de eerder opgeslagen credential-records; de server valideert de assertion-handtekening met de opgeslagen publieke sleutel en genereert OnWebAuthnAuthenticationSuccessful.

Attestation-parsing

Ondersteunt de attestation-statement-formaten none, packed, fido-u2f, tpm, android-key, android-safetynet en apple.

Counter-validatie

Houdt de signCount per credential bij om gekloonde authenticators te detecteren. Als de teller terugloopt, meldt OnWebAuthnAuthenticationError een fout waarop je kunt reageren.

Gebruikersverificatie

UserVerification kan per ceremonie worden ingesteld op required, preferred of discouraged — de validatiestap dwingt de keuze af.

Credential-records

OnWebAuthnAuthenticationOptionsRequest geeft je het verzoek, zodat je de juiste CredentialRecords teruggeeft voor de allowCredentials-lijst van de lopende login. De opslag mag je zelf ontwerpen.

Specificaties en referenties

Gezaghebbende bronnen voor de standaarden die dit component implementeert.

Passkeys, zoals gebruikers ze verwachten

Een passkey is een discoverable WebAuthn-credential die wordt bewaard door Windows Hello, iCloud Keychain, Google Password Manager of een security key. De server ondersteunt de volledige passkey-ervaring terwijl de credentials in je eigen database blijven.

Aanmelden zonder gebruikersnaam

Vraag de authenticatieopties op zonder gebruikersnaam. De browser toont de passkeys die hij voor je site heeft, de gebruiker kiest er één, en de server controleert de teruggegeven userHandle.

Passkey-autofill

Met conditional mediation verschijnen de passkeys in de autofill-lijst van het gebruikersnaamveld. Voeg autocomplete="username webauthn" toe en roep startAuthentication(options, true) aan vanuit /sgcWebAuthn.js.

Meerdere passkeys per gebruiker

Registreer een passkey op de laptop en een andere op de telefoon. Alle passkeys van een account delen één user handle en de authenticatieopties vermelden ze allemaal.

Gesynchroniseerd of aan het toestel gebonden

BackupEligible en BackupState in het credential-record onderscheiden een gesynchroniseerde passkey van een aan het toestel gebonden security key, zodat je gebruikers met slechts één toestel een tweede passkey kunt voorstellen.

Je eigen database

Bewaar het record in OnWebAuthnRegistrationSuccessful, zoek de credential van een aanmelding zonder gebruikersnaam of via autofill op in OnWebAuthnAuthenticationGetCredential, en bewaar de nieuwe teller in OnWebAuthnAuthenticationSuccessful.

Detectie van gekloonde authenticators

Een handtekeningteller die niet vooruitgaat wordt geweigerd als mogelijke kloon, net als een backup-eligibility-vlag die verandert tussen aanmeldingen. Gesynchroniseerde passkeys die altijd 0 rapporteren blijven werken.

Lees Passkeys in Delphi: wachtwoordloos aanmelden met WebAuthn en het Passkeys-helponderwerp.

Documentatie en demo's

Diepe link naar de componentreferentie, pak het kant-en-klare demoproject en download de proefversie.

Online help — TsgcWSAPIServer_WebAuthn Volledige property-, methode- en event-referentie voor dit component.
Demoproject — Demos\20.HTTP_Protocol\12.WebAuthn Kant-en-klaar voorbeeldproject. Zit in het sgcWebSockets-pakket — download hieronder de proefversie.
Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi en C++ Builder en primaire bronreferenties — alleen dit component.
Gebruikershandleiding (PDF) Uitgebreide handleiding die elk component in de bibliotheek behandelt.
De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

Klaar om passkey-authenticatie toe te voegen?

Download de gratis proefversie en breng WebAuthn-/FIDO2-passkeys naar je Delphi-server.