WebAuthn-server

· Functies

Vanaf sgcWebSockets 2025.4.0 Enterprise wordt het  WebAuthn-protocol ondersteund (momenteel in BETA). 

WebAuthn (Web Authentication) is een webstandaard ontwikkeld door het World Wide Web Consortium (W3C) en de FIDO Alliance om veilige, wachtwoordloze authenticatie op het web mogelijk te maken. Het maakt deel uit van het bredere FIDO2-framework en heeft als doel de afhankelijkheid van traditionele wachtwoorden te verminderen, die vaak kwetsbaar zijn voor phishing, credential stuffing en andere aanvallen.

In de kern stelt WebAuthn gebruikers in staat te authenticeren met publieke-sleutel-cryptografie. In plaats van een gebruikersnaam en wachtwoord registreren gebruikers een uniek publiek-/privé-sleutelpaar bij een webapplicatie (de Relying Party). De privésleutel wordt veilig opgeslagen op een authenticator—zoals een hardware-security-key, smartphone of ingebouwd biometrisch apparaat—terwijl de publieke sleutel op de server wordt opgeslagen.

Tijdens authenticatie verstuurt de server een challenge die moet worden ondertekend door de privésleutel van de gebruiker. De ondertekende challenge wordt teruggestuurd en geverifieerd met de opgeslagen publieke sleutel, wat zowel de integriteit als de origine van de respons garandeert. Deze aanpak voorkomt dat credentials worden onderschept of hergebruikt.

WebAuthn ondersteunt een reeks aan authenticators en apparaten, wat het flexibel maakt voor zowel ontwikkelaars als gebruikers. Het maakt ook multi-factor-authenticatie (MFA) mogelijk wanneer gecombineerd met andere factoren zoals PIN's of biometrie, en verbetert daarmee de beveiliging aanzienlijk zonder afbreuk te doen aan de gebruiksvriendelijkheid.

Ondersteunde attestation-formaten

Verschillende attestation-formaten bepalen hoe deze gegevens worden gestructureerd en geverifieerd. Drie veelgebruikte formaten zijn android-key, packed en andere zoals fido-u2f, apple of none. Standaard zijn alle attestation-formaten ingeschakeld. Hieronder vind je de lijst met ondersteunde attestation-formaten:


WebAuthn-flow


WebAuthn-servercomponent

Het TsgcWSAPIServer_WebAuthn -component biedt een eenvoudige maar krachtige oplossing om de WebAuthn Relying Party-server te implementeren en zo wachtwoordloze authenticatie in je webapplicatie mogelijk te maken. Een WebAuthn-applicatie bestaat uit een WebAuthn-server die de server-side registratie en authenticatie afhandelt en een client-side-applicatie die meestal een JavaScript-applicatie is.


Vind hieronder een eenvoudige configuratie van de WebAuthn-server:


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

De volgende Delphi WebAuthn-demo laat zien hoe je een nieuwe credential registreert en deze daarna gebruikt om de gebruiker te authenticeren.