From sgcWebSockets 2025.4.0 Enterprise, the WebAuthn Protocol est pris en charge (actuellement en BÊTA).
WebAuthn (Web Authentication) est un standard web développé par le World Wide Web Consortium (W3C) et la FIDO Alliance pour permettre une authentification sécurisée, sans mot de passe sur le web. Il fait partie du framework FIDO2 plus large et vise à réduire la dépendance aux mots de passe traditionnels, qui sont souvent vulnérables au phishing, au credential stuffing et à d'autres attaques.
À la base, WebAuthn permet aux utilisateurs de s'authentifier en utilisant la cryptographie à clé publique. Au lieu d'un nom d'utilisateur et d'un mot de passe, les utilisateurs enregistrent une unique paire publique-clé privée avec une application web (la Relying Party). La clé privée est stockée en toute sécurité sur un authenticator, tel que une clé de sécurité matérielle, un smartphone ou un appareil biométrique intégré—tandis que la clé publique est stockée sur le serveur.
Lors de l'authentification, le serveur émet un challenge qui doit être signé par la clé privée de l'utilisateur. Le challenge signé est renvoyé et vérifié en utilisant la clé publique, garantissant à la fois l'intégrité et l'origine de la réponse. Cette approche empêche l'interception ou la réutilisation des identifiants.
WebAuthn prend en charge une gamme d'authenticators et d'appareils, ce qui le rend flexible pour les développeurs comme pour les utilisateurs. Il permet également l'authentification multi-facteursteurs (MFA) lorsqu'il est combiné avec d'autres facteurs comme les PIN ou la biométrie, améliorant considérablement la sécurité sans sacrifier la facilité d'utilisation.
Formats d'attestation pris en charge
Différents formats d'attestation définissent comment ces données sont structurées et vérifiées. Trois formats couramment utilisés sont android-key, packed, et d'autres comme fido-u2f, apple ou none. Par défaut tous les formats d'attestation sont activés, tu trouveras ci-dessous la liste des formats d'attestation pris en charge:
- NoneAttestation: dans ce cas, aucune donnée d'attestation n'est renvoyée. Priorise la confidentialité de l'utilisateur en évitant l'exposition des identifiants d'appareil. Courant dans les applications qui ne se soucient pas de la provenance de l'appareil.
- PackedAttestation: est un format flexible et compact utilisé par de nombreux authenticators. L'authenticator renvoie un certificat d'attestation et une signature. Peut être : Full attestation : signé avec une clé et un certificat fournis par le fournisseur ou Self attestation : signé en utilisant la clé privée des identifiants. Le plus largement utilisé sur différentes plateformes (par ex. YubiKey, Windows Hello).
- TPMAttestation: Utilisé par les appareils avec un Trusted Platform Module (TPM). L'attestation est signée en utilisant les clés du TPM et inclut une chaîne de certificats. Utilisé par les postes de travail et ordinateurs portables d'entreprise avec puces TPM (par ex. machines Windows).
- AndroidKeyAttestation: Utilisé par les appareils Android avec l'Android Keystore. La clé est générée dans le matériel, et l'attestation inclut des informations signées par une chaîne de certificats émise par le fabricant de l'appareil. Utilisé par les téléphones Android avec keystores matériels (TEE ou StrongBox).
- AppleAttestation: Utilisé par les authenticators de plateforme Apple, tel que Touch ID et Face ID. L'attestation est générée par les API internes d'Apple et inclut un certificat spécial pourmat. Used on Safari utilisant Apple biométrie.
- FidoU2FAttestation: Legacy attestation format used by FIDO U2F authenticators. Renvoie a U2F-compatible certificate et signature. Used by older security keys (par ex. early YubiKeys) que prend en charge FIDO U2F.
WebAuthn Flow
- WebAuthn Registration: Le server generates a challenge et sends it to le client, qui utilise an authenticator (par ex. security key ou biométrique device) to créer un key pair. La clé publique est envoyé back et stored by le serveur for future authentification.
- WebAuthn Authentification: he server sends a challenge to le client, qui signs it utilisant le previously registered clé privée stored dans le authenticator. Le signed response est verified by le serveur utilisant le stored clé publique to confirm l'utilisateur's identity.

serveur WebAuthn Component
Le TsgcWSAPIServer_WebAuthn component fournit a simple mais powerful solution to implement le WebAuthn Relying Party server, enabling sans mot de passe in ton web application. A WebAuthn application consists sur un serveur WebAuthn que handles le serveur-side registration et authentification et un client-side application que usually est un javascript application.Voici un simple configuration de la serveur 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 serveur WebAuthn Demo
Le following Delphi WebAuthn Demo shows comment register a nouveau credential et use après to authenticate l'utilisateur.
