WebAuthn Server

· Funktionen

Ab sgcWebSockets 2025.4.0 Enterprise wird das  WebAuthn-Protokoll unterstützt (aktuell in BETA). 

WebAuthn (Web Authentication) ist ein Web-Standard, der vom World Wide Web Consortium (W3C) und der FIDO Alliance entwickelt wurde, um sichere, passwortlose Authentifizierung im Web zu ermöglichen. Er ist Teil des umfassenderen FIDO2-Frameworks und soll die Abhängigkeit von klassischen Passwörtern reduzieren, die häufig anfällig für Phishing, Credential-Stuffing und andere Angriffe sind.

Im Kern erlaubt WebAuthn die Authentifizierung mit asymmetrischer Kryptographie. Statt eines Benutzernamens und Passworts registrieren Nutzer ein eindeutiges öffentlich-privates Schlüsselpaar bei einer Webanwendung (der Relying Party). Der private Schlüssel wird sicher auf einem Authenticator gespeichert — zum Beispiel auf einem Hardware-Security-Key, Smartphone oder einem integrierten biometrischen Gerät — während der öffentliche Schlüssel auf dem Server liegt.

Bei der Authentifizierung gibt der Server eine Challenge aus, die mit dem privaten Schlüssel des Nutzers signiert werden muss. Die signierte Challenge wird zurückgesendet und mit dem gespeicherten öffentlichen Schlüssel verifiziert, was sowohl Integrität als auch Herkunft der Antwort sicherstellt. Dieser Ansatz verhindert, dass Credentials abgefangen oder wiederverwendet werden.

WebAuthn unterstützt eine Bandbreite an Authenticators und Geräten und ist damit flexibel für Entwickler wie für Nutzer. In Kombination mit weiteren Faktoren wie PINs oder Biometrie ermöglicht es Mehrfaktor-Authentifizierung (MFA) und verbessert die Sicherheit deutlich, ohne die Bedienbarkeit zu opfern.

Unterstützte Attestation-Formate

Verschiedene Attestation-Formate legen fest, wie diese Daten strukturiert und überprüft werden. Drei häufig genutzte Formate sind android-key, packed und andere wie fido-u2f, apple oder none. Standardmäßig sind alle Attestation-Formate aktiviert. Unten findest du die Liste der unterstützten Attestation-Formate:


WebAuthn-Ablauf


WebAuthn-Server-Komponente

Die Komponente TsgcWSAPIServer_WebAuthn bietet eine einfache, aber leistungsstarke Lösung, um den WebAuthn-Relying-Party-Server zu implementieren und passwortlose Authentifizierung in deiner Webanwendung zu ermöglichen. Eine WebAuthn-Anwendung besteht aus einem WebAuthn-Server, der die serverseitige Registrierung und Authentifizierung übernimmt, und einer clientseitigen Anwendung, die in der Regel eine JavaScript-Anwendung ist.


Unten findest du eine einfache Konfiguration des WebAuthn-Servers:


  // ... create the servers
  HTTPServer := TsgcWebSocketHTTPServer.Create(nil);
  WebAuthnServer := TsgcWSAPIServer_WebAuthn.Create(nil);
  WebAuthnServer.Server := HTTPServer;
  // ... enable for testing
  WebAuthnServer.EndpointsOptions.Test.Enabled := True;
  // ... WebAuthn options
  WebAuthnServer.WebAuthnOptions.RelyingParty := 'localhost';
  // ... bindings
  Server.Port := 443;
  HTTPServer.SSLOptions.Port := 443;
  HTTPServer.Bindings.Clear;
  With HTTPServer.Bindings.Add do
  begin
    Port := 443;
    IP := '127.0.0.1';
  end;
  HTTPServer.SSLOptions.Certificate := 'sgc.pem';
  HTTPServer.SSLOptions.KeyFile := 'sgc.pem';  
  HTTPServer.SSL := True;
  // ... active
  HTTPServer.Active := True; 

Delphi-WebAuthn-Server-Demo

Das folgende Delphi-WebAuthn-Demo zeigt, wie du ein neues Credential registrierst und anschließend zur Authentifizierung des Nutzers verwendest.