Análisis a fondo del servidor WebAuthn de sgcWebSockets

· Componentes

El componente TsgcWSAPIServer_WebAuthn es un módulo de servidor Delphi/FPC que implementa el lado de relying party del protocolo WebAuthn sobre HTTPS. Se integra con TsgcWebSocketHTTPServer o TsgcWebSocketServer, y expone endpoints tipo REST para registro y autenticación. 

Mecánica de los endpoints

Por defecto, el componente registra rutas bajo /sgcWebAuthn:

PropósitoEndpoint por defectoDescripción
Opciones de registro/Registration/OptionsEl cliente solicita un challenge e información de la relying party antes de llamar a navigator.credentials.create
Verificación de registro/Registration/VerifyEl navegador envía la nueva credencial, el objeto de attestation y los datos del cliente para que el servidor los valide
Opciones de autenticación/Authentication/OptionsEl servidor proporciona una lista de IDs de credencial permitidos y un challenge
Verificación de autenticación/Authentication/VerifyEl navegador envía la assertion (authenticatorData + firma) para su verificación
Helper de JavaScript/WebauthnEntrega un script auxiliar que envuelve las llamadas estándar de WebAuthn del navegador
Página de prueba/TestUna página HTML rápida para ejercitar la API durante el desarrollo


Los endpoints pueden remapearse mediante EndpointOptions para ajustarse a esquemas de enrutado existentes. 

Propiedades principales

  1. RelyingParty (RPID / RPName) – Mandatory DNS name identifying the logical domain for credentials. Ensure it matches the effective domain of your application.
  2. Origins & TopOrigins – Semi‑colon separated lists of valid origins. Origins covers primary domains; TopOrigins is used when embedding in iframes.
  3. AllowCrossOrigins – If set True, cross‑origin iframes may request authentication. This requires carefully curated TopOrigins and server‑side validation.
  4. Algorithms – Supported COSE algorithm identifiers (e.g., ES256, RS256, EdDSA). This controls which public key types the server will accept.
  5. TimeoutMS – Timeout suggested to the client for completing WebAuthn operations.
  6. UserVerification – Policy for user verification (preferred, required, discouraged).
  7. Attestation – Specifies whether attestation is none, indirect, or direct. Direct attestation requires validating the attestation certificate chain.
  8. Metadata Service (MDS) – When enabled, the component consults FIDO Metadata Service files to confirm authenticator model trustworthiness. Fields:
    • MDS_FileName – Local cached JSON metadata (downloaded from FIDO).
    • RootCert_FileName – Root certificate for verifying metadata signatures.
  9. ChallengeOptions – Allows custom length and randomness source for generated challenges.
  10. CredentialStorage – While not a direct property, the component expects the application to persist credential public keys, sign counters, and user handles.

Ciclo de vida de eventos

Registro

Autenticación

Estos eventos permiten un control de grano fino sobre cada paso del protocolo, desde la generación de opciones hasta el procesamiento de assertions.