Servidor WebAuthn

· Recursos

A partir do sgcWebSockets 2025.4.0 Enterprise, o Protocolo WebAuthn é suportado (atualmente em BETA). 

WebAuthn (Web Authentication) é um padrão web desenvolvido pelo World Wide Web Consortium (W3C) e pela FIDO Alliance para habilitar autenticação segura e sem senha na web. Faz parte do framework FIDO2 e tem como objetivo reduzir a dependência de senhas tradicionais, que frequentemente são vulneráveis a phishing, credential stuffing e outros ataques.

Em essência, o WebAuthn permite que os usuários se autentiquem usando criptografia de chave pública. Em vez de usuário e senha, os usuários registram um par de chaves pública-privada único com uma aplicação web (o Relying Party). A chave privada é armazenada de forma segura em um autenticador — como uma chave de segurança física, smartphone ou dispositivo biométrico integrado — enquanto a chave pública é armazenada no servidor.

Durante a autenticação, o servidor emite um desafio que deve ser assinado pela chave privada do usuário. O desafio assinado é retornado e verificado usando a chave pública armazenada, garantindo tanto a integridade quanto a origem da resposta. Essa abordagem impede que as credenciais sejam interceptadas ou reutilizadas.

O WebAuthn suporta uma variedade de autenticadores e dispositivos, tornando-o flexível tanto para desenvolvedores quanto para usuários. Ele também permite autenticação multifator (MFA) quando combinado com outros fatores como PINs ou biometria, melhorando significativamente a segurança sem sacrificar a usabilidade.

Formatos de Attestation Suportados

Diferentes formatos de attestation definem como esses dados são estruturados e verificados. Três formatos comumente usados são android-key, packed e outros como fido-u2f, apple ou none. Por padrão, todos os formatos de attestation estão habilitados; veja abaixo a lista de formatos suportados:


Fluxo do WebAuthn


Componente Servidor WebAuthn

O componente TsgcWSAPIServer_WebAuthn fornece uma solução simples, mas poderosa, para implementar o servidor Relying Party do WebAuthn, habilitando autenticação sem senha em sua aplicação web. Uma aplicação WebAuthn consiste em um servidor WebAuthn que trata o registro e a autenticação no lado do servidor, e uma aplicação do lado do cliente que geralmente é uma aplicação JavaScript.


Veja abaixo uma configuração simples do Servidor WebAuthn:


  // ... create the servers
  HTTPServer := TsgcWebSocketHTTPServer.Create(nil);
  WebAuthnServer := TsgcWSAPIServer_WebAuthn.Create(nil);
  WebAuthnServer.Server := HTTPServer;
  // ... enable for testing
  WebAuthnServer.EndpointsOptions.Test.Enabled := True;
  // ... WebAuthn options
  WebAuthnServer.WebAuthnOptions.RelyingParty := 'localhost';
  // ... bindings
  Server.Port := 443;
  HTTPServer.SSLOptions.Port := 443;
  HTTPServer.Bindings.Clear;
  With HTTPServer.Bindings.Add do
  begin
    Port := 443;
    IP := '127.0.0.1';
  end;
  HTTPServer.SSLOptions.Certificate := 'sgc.pem';
  HTTPServer.SSLOptions.KeyFile := 'sgc.pem';  
  HTTPServer.SSL := True;
  // ... active
  HTTPServer.Active := True; 

Demo do Servidor WebAuthn em Delphi

A Demo WebAuthn em Delphi a seguir mostra como registrar uma nova credencial e usá-la em seguida para autenticar o usuário.