Approfondimento sul WebAuthn Server di sgcWebSockets

· Componenti

Il componente TsgcWSAPIServer_WebAuthn è un modulo server Delphi/FPC che implementa il lato relying‑party del protocollo WebAuthn su HTTPS. Si integra con TsgcWebSocketHTTPServer o TsgcWebSocketServer ed espone endpoint REST‑like per la registrazione e l'autenticazione. 

Funzionamento degli endpoint

Per impostazione predefinita, il componente registra le route sotto /sgcWebAuthn:

ScopoEndpoint predefinitoDescrizione
Opzioni di registrazione/Registration/OptionsIl client richiede una challenge e le informazioni della relying‑party prima di chiamare navigator.credentials.create
Verifica registrazione/Registration/VerifyIl browser invia la nuova credenziale, l'attestation object e i client data per la convalida del server
Opzioni di autenticazione/Authentication/OptionsIl server fornisce un elenco di ID di credenziali consentite e una challenge
Verifica autenticazione/Authentication/VerifyIl browser invia l'assertion (authenticatorData + firma) per la verifica
Helper JavaScript/WebauthnFornisce uno script helper che incapsula le chiamate WebAuthn standard del browser
Pagina di test/TestUna pagina HTML rapida per provare l'API in fase di sviluppo


Gli endpoint possono essere rimappati tramite EndpointOptions per adattarsi agli schemi di routing esistenti. 

Proprietà principali

  1. RelyingParty (RPID / RPName) – Nome DNS obbligatorio che identifica il dominio logico delle credenziali. Assicurati che corrisponda al dominio effettivo della tua applicazione.
  2. Origins e TopOrigins – Elenchi separati da punto e virgola di origini valide. Origins copre i domini principali; TopOrigins si usa quando il sito è incorporato in iframe.
  3. AllowCrossOrigins – Se impostato a True, gli iframe cross‑origin possono richiedere l'autenticazione. Ciò richiede TopOrigins curati con attenzione e validazione lato server.
  4. Algorithms – Identificatori di algoritmi COSE supportati (es. ES256, RS256, EdDSA). Controlla quali tipi di chiave pubblica il server accetta.
  5. TimeoutMS – Timeout suggerito al client per completare le operazioni WebAuthn.
  6. UserVerification – Policy per la verifica utente (preferred, required, discouraged).
  7. Attestation – Specifica se l'attestation è none, indirect o direct. L'attestation di tipo direct richiede la validazione della catena di certificati di attestation.
  8. Metadata Service (MDS) – Quando abilitato, il componente consulta i file del FIDO Metadata Service per confermare l'affidabilità del modello di authenticator. Campi:
    • MDS_FileName – Metadati JSON in cache locale (scaricati da FIDO).
    • RootCert_FileName – Certificato root per verificare le firme dei metadati.
  9. ChallengeOptions – Permette lunghezza personalizzata e sorgente di casualità per le challenge generate.
  10. CredentialStorage – Pur non essendo una proprietà diretta, il componente si aspetta che l'applicazione persista le chiavi pubbliche delle credenziali, i sign counter e gli user handle.

Ciclo di vita degli eventi

Registrazione

Autenticazione

Questi eventi consentono un controllo a grana fine su ogni fase del protocollo, dalla generazione delle opzioni al processamento delle assertion.