Serveur WebAuthn pour Delphi

Ajoute de l'authentification sans mot de passe basée sur passkeys à ton serveur Delphi. Cérémonies d'enregistrement et d'authentification WebAuthn Level 2 / FIDO2, vérification des attestations, hooks de stockage des credentials.

TsgcWSAPIServer_WebAuthn

Implémente le côté serveur relying-party WebAuthn — crée des challenges de credentials, vérifie les réponses navigator.credentials, parse les attestation statements et valide les signatures d'assertion.

Classe du composant

TsgcWSAPIServer_WebAuthn

Plateformes

Windows, macOS, Linux, iOS, Android

Édition

Enterprise

Monte le relying party, stocke les credentials

Pose un TsgcWSAPIServer_WebAuthn sur un TsgcWebSocketHTTPServer, renseigne WebAuthnOptions.RelyingParty, puis gère OnWebAuthnRegistrationSuccessful pour stocker chaque nouvelle passkey et OnWebAuthnAuthenticationGetCredential pour la recharger à la connexion.

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;

Ce qu’il y a à l’intérieur

Un serveur relying-party qui transforme un processus Delphi en endpoint d'authentification compatible passkeys.

Cérémonie d'enregistrement

OnWebAuthnRegistrationOptionsRequest accepte la demande de PublicKeyCredentialCreationOptions ; le navigateur invoque navigator.credentials.create() ; le serveur valide l'attestation et OnWebAuthnRegistrationSuccessful retourne le nouvel enregistrement de credential.

Cérémonie d'authentification

OnWebAuthnAuthenticationOptionsRequest remplit les PublicKeyCredentialRequestOptions avec les enregistrements de credentials précédemment stockés ; le serveur valide la signature d'assertion avec la clé publique stockée et déclenche OnWebAuthnAuthenticationSuccessful.

Parsing des attestations

Prend en charge les formats d'attestation statement none, packed, fido-u2f, tpm, android-key, android-safetynet et apple.

Validation du counter

Suit le signCount par credential pour détecter les authentificateurs clonés. Si le compteur recule, OnWebAuthnAuthenticationError rapporte une erreur sur laquelle tu peux agir.

Vérification utilisateur

UserVerification peut être réglé sur required, preferred ou discouraged par cérémonie — l'étape de validation applique le choix.

Enregistrements de credentials

OnWebAuthnAuthenticationOptionsRequest te passe la demande pour que tu retournes les bons CredentialRecords pour la liste allowCredentials de la connexion en cours. Le stockage est à ta charge.

Spécifications et références

Sources de référence pour les standards implémentés par ce composant.

Des passkeys comme les utilisateurs les attendent

Une passkey est un credential WebAuthn découvrable conservé par Windows Hello, iCloud Keychain, Google Password Manager ou une clé de sécurité. Le serveur prend en charge l'expérience passkey complète pendant que les credentials restent dans ta propre base de données.

Connexion sans nom d'utilisateur

Demande les options d'authentification sans nom d'utilisateur. Le navigateur liste les passkeys qu'il détient pour ton site, l'utilisateur en choisit une, et le serveur vérifie le userHandle retourné.

Saisie automatique des passkeys

Avec la médiation conditionnelle, les passkeys apparaissent dans la liste de saisie automatique du champ nom d'utilisateur. Ajoute autocomplete="username webauthn" et appelle startAuthentication(options, true) depuis /sgcWebAuthn.js.

Plusieurs passkeys par utilisateur

Enregistre une passkey sur l'ordinateur portable et une autre sur le téléphone. Toutes les passkeys d'un compte partagent un même user handle, et les options d'authentification les listent toutes.

Synchronisée ou liée à l'appareil

BackupEligible et BackupState dans l'enregistrement de credential distinguent une passkey synchronisée d'une clé de sécurité liée à l'appareil, pour que tu puisses suggérer une seconde passkey aux utilisateurs qui n'ont qu'un seul appareil.

Ta propre base de données

Enregistre le credential dans OnWebAuthnRegistrationSuccessful, recherche le credential d'une connexion sans nom d'utilisateur ou par saisie automatique dans OnWebAuthnAuthenticationGetCredential, et stocke le nouveau compteur dans OnWebAuthnAuthenticationSuccessful.

Détection d'authentificateur cloné

Un compteur de signature qui n'avance pas est rejeté comme clone potentiel, tout comme un indicateur d'éligibilité de sauvegarde qui change entre deux connexions. Les passkeys synchronisées, qui rapportent toujours 0, continuent de fonctionner.

Lis Passkeys en Delphi : connexion sans mot de passe avec WebAuthn et la rubrique d'aide Passkeys.

Documentation et démos

Lien direct vers la référence du composant, récupère le projet de démo prêt à exécuter et télécharge l’essai.

Aide en ligne — TsgcWSAPIServer_WebAuthn Référence complète des propriétés, méthodes et événements de ce composant.
Projet de démo — Demos\20.HTTP_Protocol\12.WebAuthn Projet d’exemple prêt à exécuter. Livré dans le paquet sgcWebSockets — télécharge l’essai ci-dessous.
Document technique (PDF) Features, quick start, code samples for Delphi & C++ Builder and primary-source references — this component only.
Manuel utilisateur (PDF) Manuel exhaustif couvrant chaque composant de la bibliothèque.
Meilleur rapport qualité-prix : All-AccessTous les produits eSeGeCe, Support Premium inclus, à partir de €1,059/an.
Voir les tarifs All-Access

Prêt à ajouter l'authentification par passkey ?

Télécharge l'essai gratuit et apporte les passkeys WebAuthn / FIDO2 à ton serveur Delphi.