Plongée dans le serveur WebAuthn de sgcWebSockets

· Composants

Le composant TsgcWSAPIServer_WebAuthn est un module serveur Delphi/FPC qui implémente le côté relying-party du protocole WebAuthn sur HTTPS. Il s'intègre avec TsgcWebSocketHTTPServer ou TsgcWebSocketServer, et expose des endpoints de type REST pour l'enregistrement et l'authentification. 

Mécanique des endpoints

Par défaut, le composant enregistre des routes sous /sgcWebAuthn :

ObjectifEndpoint par défautDescription
Options d'enregistrement/Registration/OptionsLe client demande un challenge et les infos du relying-party avant d'appeler navigator.credentials.create
Vérification d'enregistrement/Registration/VerifyLe navigateur poste la nouvelle credential, l'objet d'attestation et les données client pour validation côté serveur
Options d'authentification/Authentication/OptionsLe serveur fournit une liste d'identifiants de credentials autorisés et un challenge
Vérification d'authentification/Authentication/VerifyLe navigateur poste l'assertion (authenticatorData + signature) pour vérification
Helper JavaScript/WebauthnFournit un script utilitaire qui encapsule les appels standard WebAuthn du navigateur
Page de test/TestUne page HTML rapide pour tester l'API en développement


Les endpoints peuvent être remappés via EndpointOptions pour s'adapter aux schémas de routage existants. 

Propriétés principales

  1. RelyingParty (RPID / RPName) – Nom DNS obligatoire identifiant le domaine logique des credentials. Assure-toi qu'il corresponde au domaine effectif de ton application.
  2. Origins & TopOrigins – Listes d'origines valides séparées par des points-virgules. Origins couvre les domaines principaux ; TopOrigins est utilisé lors de l'intégration dans des iframes.
  3. AllowCrossOrigins – Si défini à True, les iframes cross-origin peuvent demander l'authentification. Cela nécessite des TopOrigins soigneusement contrôlés et une validation côté serveur.
  4. Algorithms – Identifiants d'algorithmes COSE pris en charge (par ex. ES256, RS256, EdDSA). Cela contrôle les types de clés publiques que le serveur acceptera.
  5. TimeoutMS – Délai suggéré au client pour terminer les opérations WebAuthn.
  6. UserVerification – Politique de vérification de l'utilisateur (preferred, required, discouraged).
  7. Attestation – Spécifie si l'attestation est none, indirect ou direct. L'attestation directe nécessite la validation de la chaîne de certificats d'attestation.
  8. Metadata Service (MDS) – Quand activé, le composant consulte les fichiers FIDO Metadata Service pour confirmer la fiabilité du modèle d'authentificateur. Champs :
    • MDS_FileName – Métadonnées JSON locales en cache (téléchargées depuis FIDO).
    • RootCert_FileName – Certificat racine pour vérifier les signatures des métadonnées.
  9. ChallengeOptions – Permet de personnaliser la longueur et la source d'aléatoire des challenges générés.
  10. CredentialStorage – Bien que ce ne soit pas une propriété directe, le composant s'attend à ce que l'application stocke les clés publiques des credentials, les compteurs de signature et les identifiants utilisateur.

Cycle de vie des événements

Enregistrement

Authentification

Ces événements offrent un contrôle fin sur chaque étape du protocole, de la génération des options au traitement des assertions.