Server WebAuthn per Delphi

Aggiungi al tuo server Delphi l'autenticazione senza password basata su passkey. Cerimonie di registrazione e autenticazione WebAuthn Level 2 / FIDO2, verifica delle attestation, hook per lo storage delle credenziali.

TsgcWSAPIServer_WebAuthn

Implementa il lato server relying-party di WebAuthn — crea challenge per le credenziali, verifica le risposte di navigator.credentials, parsa gli statement di attestation e convalida le firme di assertion.

Classe del componente

TsgcWSAPIServer_WebAuthn

Piattaforme

Windows, macOS, Linux, iOS, Android

Edizione

Enterprise

Monta il relying party, salva le credenziali

Trascina un TsgcWSAPIServer_WebAuthn su un TsgcWebSocketHTTPServer, imposta WebAuthnOptions.RelyingParty, poi gestisci OnWebAuthnRegistrationSuccessful per salvare ogni nuova passkey e OnWebAuthnAuthenticationGetCredential per recuperarla in fase di accesso.

uses
  sgcWebSocket, sgcWebSocket_Server_APIs, sgcWebAuthn_Classes;

// Server: TsgcWebSocketHTTPServer and WebAuthn: TsgcWSAPIServer_WebAuthn are form fields
procedure TForm1.StartServer;
begin
  Server := TsgcWebSocketHTTPServer.Create(nil);
  Server.Port := 8443;
  Server.SSL  := True;
  Server.SSLOptions.CertFile := 'server.pem';
  Server.SSLOptions.KeyFile  := 'server.pem';
  Server.SSLOptions.Port     := 8443;

  WebAuthn := TsgcWSAPIServer_WebAuthn.Create(nil);
  WebAuthn.Server := Server;
  WebAuthn.WebAuthnOptions.RelyingParty := 'example.com';
  WebAuthn.OnWebAuthnRegistrationSuccessful := OnRegistrationSuccessful;
  WebAuthn.OnWebAuthnAuthenticationGetCredential := OnGetCredential;

  Server.Active := True;
end;

procedure TForm1.OnRegistrationSuccessful(Sender: TObject;
  const aRegistration: TsgcWebAuthn_Registration;
  const aCredentialRecord: TsgcWebAuthn_CredentialRecord; var Accept: Boolean);
begin
  // store the new passkey in your own database
  SaveCredential(aCredentialRecord.CredentialId, aCredentialRecord.AsJSON);
end;

procedure TForm1.OnGetCredential(Sender: TObject; const aCredentialId: string;
  const aCredentialRecord: TsgcWebAuthn_CredentialRecord; var Found: Boolean);
var
  vJSON: string;
begin
  // sign in: load the stored passkey back
  vJSON := LoadCredential(aCredentialId);
  Found := vJSON <> '';
  if Found then
    aCredentialRecord.ReadJSON(vJSON);
end;
// uses: sgcWebSocket, sgcWebSocket_Server_APIs
TsgcWebSocketHTTPServer *Server = new TsgcWebSocketHTTPServer(this);
TsgcWSAPIServer_WebAuthn *WebAuthn = new TsgcWSAPIServer_WebAuthn(this);
WebAuthn->Server = Server;
WebAuthn->WebAuthnOptions->RelyingParty = "example.com";
Server->Active = true;

Cosa contiene

Un server relying-party che trasforma un processo Delphi in un endpoint di autenticazione compatibile con le passkey.

Cerimonia di registrazione

OnWebAuthnRegistrationOptionsRequest accetta la richiesta delle PublicKeyCredentialCreationOptions; il browser invoca navigator.credentials.create(); il server convalida l'attestation e OnWebAuthnRegistrationSuccessful restituisce il nuovo record di credenziale.

Cerimonia di autenticazione

OnWebAuthnAuthenticationOptionsRequest popola le PublicKeyCredentialRequestOptions con i record di credenziale memorizzati in precedenza; il server convalida la firma di assertion usando la chiave pubblica memorizzata e genera OnWebAuthnAuthenticationSuccessful.

Parsing delle attestation

Supporta i formati di statement di attestation none, packed, fido-u2f, tpm, android-key, android-safetynet e apple.

Validazione del counter

Traccia il signCount per credenziale per rilevare authenticator clonati. Se il counter regredisce, OnWebAuthnAuthenticationError segnala un errore su cui puoi intervenire.

Verifica dell'utente

UserVerification può essere impostato su required, preferred o discouraged per ogni cerimonia — lo step di validazione applica la scelta.

Record delle credenziali

OnWebAuthnAuthenticationOptionsRequest ti passa la richiesta in modo che tu restituisca i CredentialRecords corretti per la lista allowCredentials del login in corso. Lo storage lo progetti tu.

Specifiche e riferimenti

Fonti autorevoli per gli standard implementati da questo componente.

Le passkey, come gli utenti se le aspettano

Una passkey è una credenziale WebAuthn discoverable conservata da Windows Hello, iCloud Keychain, Google Password Manager o una chiave di sicurezza. Il server supporta l'esperienza passkey completa mentre le credenziali restano nel tuo database.

Accesso senza nome utente

Richiedi le opzioni di autenticazione senza un nome utente. Il browser elenca le passkey che possiede per il tuo sito, l'utente ne sceglie una e il server verifica lo userHandle restituito.

Autofill delle passkey

Con la conditional mediation le passkey compaiono nell'elenco di autofill del campo nome utente. Aggiungi autocomplete="username webauthn" e chiama startAuthentication(options, true) da /sgcWebAuthn.js.

Più passkey per utente

Registra una passkey sul laptop e un'altra sul telefono. Tutte le passkey di un account condividono un unico user handle e le opzioni di autenticazione le elencano tutte.

Sincronizzata o legata al dispositivo

BackupEligible e BackupState nel record di credenziale distinguono una passkey sincronizzata da una chiave di sicurezza legata al dispositivo, così puoi suggerire una seconda passkey agli utenti con un solo dispositivo.

Il tuo database

Salva il record in OnWebAuthnRegistrationSuccessful, cerca la credenziale di un accesso senza nome utente o via autofill in OnWebAuthnAuthenticationGetCredential, e memorizza il nuovo counter in OnWebAuthnAuthenticationSuccessful.

Rilevamento di authenticator clonati

Un counter di firma che non avanza viene rifiutato come possibile clone, così come un flag di backup eligibility che cambia tra un accesso e l'altro. Le passkey sincronizzate che riportano sempre 0 continuano a funzionare.

Leggi Passkey in Delphi: accesso senza password con WebAuthn e l'argomento della guida Passkeys.

Documentazione e demo

Vai al riferimento del componente, scarica il progetto demo pronto all'uso e prova la versione trial.

Guida online — TsgcWSAPIServer_WebAuthn Riferimento completo di proprietà, metodi ed eventi per questo componente.
Progetto demo — Demos\20.HTTP_Protocol\12.WebAuthn Progetto di esempio pronto all'uso. Incluso nel pacchetto sgcWebSockets — scarica la versione di prova qui sotto.
Documento tecnico (PDF) Funzionalità, guida rapida, esempi di codice per Delphi e C++ Builder e riferimenti alle fonti primarie — solo per questo componente.
Manuale utente (PDF) Manuale completo che copre tutti i componenti della libreria.
La scelta più conveniente: All-AccessTutti i prodotti eSeGeCe, con Supporto Premium incluso, a partire da €1,059/anno.
Vedi i prezzi All-Access

Pronto ad aggiungere l'autenticazione con passkey?

Scarica la versione di prova gratuita e porta le passkey WebAuthn / FIDO2 sul tuo server Delphi.