Delphi WebAuthn Server

Fügen Sie Ihrem Delphi-Server eine passwortlose Authentifizierung auf Passkey-Basis hinzu. WebAuthn Level 2 / FIDO2 Registrierungs- und Authentifizierungsabläufe, Attestierungsverifizierung und Hooks für die Anmeldedaten-Speicherung.

TsgcWSAPIServer_WebAuthn

Implementiert die WebAuthn-Serverseite der vertrauenden Partei (Relying Party) — erstellt Anmeldedaten-Challenges, verifiziert navigator.credentials-Antworten, parst Attestierungsanweisungen und validiert Assertion-Signaturen.

Komponentenklasse

TsgcWSAPIServer_WebAuthn

Plattformen

Windows, macOS, Linux, iOS, Android

Edition

Enterprise

Relying Party einbinden, Anmeldedaten speichern

Platzieren Sie einen TsgcWSAPIServer_WebAuthn auf einem TsgcWebSocketHTTPServer, setzen Sie WebAuthnOptions.RelyingParty und behandeln Sie anschließend OnWebAuthnRegistrationSuccessful, um jeden neuen Passkey zu speichern, sowie OnWebAuthnAuthenticationGetCredential, um ihn bei der Anmeldung wieder zu laden.

uses
  sgcWebSocket, sgcWebSocket_Server_APIs, sgcWebAuthn_Classes;

// Server: TsgcWebSocketHTTPServer and WebAuthn: TsgcWSAPIServer_WebAuthn are form fields
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
  // store the new passkey in your own 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
  // sign in: load the stored passkey back
  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;

Was steckt drin

Ein Relying-Party-Server, der einen Delphi-Prozess in einen Passkey-fähigen Authentifizierungs-Endpunkt verwandelt.

Registrierungsablauf

OnWebAuthnRegistrationOptionsRequest nimmt die Anfrage für PublicKeyCredentialCreationOptions entgegen; der Browser ruft navigator.credentials.create() auf; der Server validiert die Attestierung, und OnWebAuthnRegistrationSuccessful gibt den neuen Anmeldedaten-Datensatz zurück.

Authentifizierungsablauf

OnWebAuthnAuthenticationOptionsRequest füllt PublicKeyCredentialRequestOptions mit den zuvor gespeicherten Anmeldedaten-Datensätzen; der Server validiert die Assertion-Signatur mithilfe des gespeicherten öffentlichen Schlüssels und löst OnWebAuthnAuthenticationSuccessful aus.

Attestierungs-Parsing

Unterstützt die Attestierungs-Anweisungsformate none, packed, fido-u2f, tpm, android-key, android-safetynet und apple.

Zähler-Validierung

Verfolgt den signCount pro Anmeldedatum, um geklonte Authentifikatoren zu erkennen. Geht der Zähler zurück, meldet OnWebAuthnAuthenticationError einen Fehler, auf den Sie reagieren können.

Benutzerverifizierung

UserVerification kann pro Ablauf auf required, preferred oder discouraged gesetzt werden — der Validierungsschritt erzwingt die Auswahl.

Anmeldedaten-Datensätze

OnWebAuthnAuthenticationOptionsRequest übergibt Ihnen die Anfrage, sodass Sie die richtigen CredentialRecords für die allowCredentials-Liste des laufenden Logins zurückgeben. Die Speicherung gestalten Sie selbst.

Spezifikationen und Referenzen

Maßgebliche Quellen für die Standards, die diese Komponente implementiert.

Passkeys, wie Benutzer sie erwarten

Ein Passkey ist ein auffindbares WebAuthn-Anmeldedatum, verwaltet von Windows Hello, iCloud-Schlüsselbund, Google Passwortmanager oder einem Sicherheitsschlüssel. Der Server unterstützt die vollständige Passkey-Erfahrung, während die Anmeldedaten in Ihrer eigenen Datenbank bleiben.

Anmeldung ohne Benutzernamen

Fordern Sie die Authentifizierungsoptionen ohne Benutzernamen an. Der Browser listet die Passkeys auf, die er für Ihre Website gespeichert hat, der Benutzer wählt einen aus, und der Server prüft das zurückgegebene userHandle.

Passkey-Autofill

Mit bedingter Vermittlung erscheinen die Passkeys in der Autofill-Liste des Benutzernamensfelds. Fügen Sie autocomplete="username webauthn" hinzu und rufen Sie startAuthentication(options, true) aus /sgcWebAuthn.js auf.

Mehrere Passkeys pro Benutzer

Registrieren Sie einen Passkey auf dem Laptop und einen weiteren auf dem Smartphone. Alle Passkeys eines Kontos teilen sich ein User-Handle, und die Authentifizierungsoptionen listen jeden davon auf.

Synchronisiert oder gerätegebunden

BackupEligible und BackupState im Anmeldedaten-Datensatz unterscheiden einen synchronisierten Passkey von einem gerätegebundenen Sicherheitsschlüssel, sodass Sie Benutzern mit nur einem Gerät einen zweiten Passkey vorschlagen können.

Ihre eigene Datenbank

Speichern Sie den Datensatz in OnWebAuthnRegistrationSuccessful, schlagen Sie das Anmeldedatum einer Anmeldung ohne Benutzernamen oder per Autofill in OnWebAuthnAuthenticationGetCredential nach, und speichern Sie den neuen Zähler in OnWebAuthnAuthenticationSuccessful.

Erkennung geklonter Authentifikatoren

Ein Signaturzähler, der nicht vorwärts läuft, wird als möglicher Klon abgelehnt, ebenso ein Backup-Eligibility-Flag, das sich zwischen Anmeldungen ändert. Synchronisierte Passkeys, die stets 0 melden, funktionieren weiterhin.

Lesen Sie Passkeys in Delphi: passwortlose Anmeldung mit WebAuthn und das Hilfethema Passkeys.

Dokumentation & Demos

Springe direkt zur Komponentenreferenz, lade das einsatzbereite Demo-Projekt herunter und teste die Testversion.

Online-Hilfe — TsgcWSAPIServer_WebAuthn Vollständige Eigenschaften-, Methoden- und Ereignisreferenz für diese Komponente.
Demo-Projekt — Demos\20.HTTP_Protocol\12.WebAuthn Einsatzbereites Beispielprojekt. Im sgcWebSockets-Paket enthalten — lade unten die Testversion herunter.
Technisches Dokument (PDF) Funktionen, Schnellstart, Codebeispiele für Delphi & C++ Builder und Primärquellenreferenzen — nur für diese Komponente.
Benutzerhandbuch (PDF) Umfassendes Handbuch zu jeder Komponente der Bibliothek.
Bestes Preis-Leistungs-Verhältnis: All-AccessAlle eSeGeCe-Produkte, inklusive Premium-Support, ab €1,059 pro Jahr.
All-Access-Preise ansehen

Bereit, Passkey-Authentifizierung hinzuzufügen?

Laden Sie die kostenlose Testversion herunter und bringen Sie WebAuthn / FIDO2 Passkeys auf Ihren Delphi-Server.