Serwer WebAuthn

· Funkcje

From sgcWebSockets 2025.4.0 Enterprise, the  WebAuthn Protocol is supported (currently in BETA). 

WebAuthn (Web Authentication) to standard sieciowy opracowany przez W3C i FIDO Alliance, umożliwiający bezpieczne, bezhasłowe uwierzytelnianie w sieci. Jest częścią szerszego frameworka FIDO2 i ma na celu zmniejszenie zależności od tradycyjnych haseł, które są podatne na phishing, credential stuffing i inne ataki.

U podstaw WebAuthn leży kryptografia klucza publicznego. Zamiast nazwy użytkownika i hasła, użytkownicy rejestrują unikalną parę kluczy publiczny-prywatny w aplikacji webowej (Relying Party). Klucz prywatny jest bezpiecznie przechowywany w uwierzytelniatorze — takim jak sprzętowy klucz bezpieczeństwa, smartfon lub wbudowane urządzenie biometryczne — podczas gdy klucz publiczny jest przechowywany na serwerze.

Podczas uwierzytelniania serwer wydaje wyzwanie, które musi być podpisane kluczem prywatnym użytkownika. Podpisane wyzwanie jest odsyłane i weryfikowane za pomocą przechowywanego klucza publicznego, zapewniając integralność i autentyczność odpowiedzi. Takie podejście zapobiega przechwytywaniu lub ponownemu użyciu poświadczeń.

WebAuthn obsługuje szeroki zakres uwierzytelniatorów i urządzeń, co czyni go elastycznym dla deweloperów i użytkowników. Umożliwia też wieloczynnikowe uwierzytelnianie (MFA) w połączeniu z innymi czynnikami, takimi jak PIN-y lub biometria, znacznie poprawiając bezpieczeństwo bez poświęcania użyteczności.

Obsługiwane formaty attestation

Różne formaty attestation definiują, jak te dane są strukturyzowane i weryfikowane. Trzy powszechnie używane formaty to android-key, packed oraz inne, takie jak fido-u2f, apple lub none. Domyślnie wszystkie formaty attestation są włączone; poniżej znajdziesz listę obsługiwanych formatów:


WebAuthn Flow


Komponent serwera WebAuthn

Komponent TsgcWSAPIServer_WebAuthn zapewnia proste, ale potężne rozwiązanie do implementacji serwera WebAuthn Relying Party, umożliwiając bezhasłowe uwierzytelnianie w aplikacji webowej. Aplikacja WebAuthn składa się z serwera WebAuthn obsługującego rejestrację i uwierzytelnianie po stronie serwera oraz aplikacji klienckiej (zazwyczaj w JavaScript).


Poniżej znajdziesz prostą konfigurację serwera WebAuthn:


  // ... 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

The following Delphi WebAuthn Demo shows how to register a new credential and use after to authenticate the user.