O componente TsgcWSAPIServer_WebAuthn é um módulo de servidor Delphi/FPC que implementa o lado relying-party do protocolo WebAuthn sobre HTTPS. Ele se integra ao TsgcWebSocketHTTPServer ou ao TsgcWebSocketServer e expõe endpoints no estilo REST para registro e autenticação.
Mecânica dos endpoints
Por padrão, o componente registra rotas sob /sgcWebAuthn:
| Finalidade | Endpoint padrão | Descrição |
|---|---|---|
| Opções de registro | /Registration/Options | O cliente solicita um desafio e informações da relying-party antes de chamar navigator.credentials.create |
| Verificação de registro | /Registration/Verify | O navegador envia a nova credencial, o objeto de attestation e os dados do cliente para validação no servidor |
| Opções de autenticação | /Authentication/Options | O servidor fornece uma lista de IDs de credencial permitidos e um desafio |
| Verificação de autenticação | /Authentication/Verify | O navegador envia a asserção (authenticatorData + assinatura) para verificação |
| Helper JavaScript | /Webauthn | Entrega um script auxiliar que encapsula as chamadas WebAuthn padrão do navegador |
| Página de teste | /Test | Uma página HTML rápida para exercitar a API durante o desenvolvimento |
Os endpoints podem ser remapeados por meio de EndpointOptions para se ajustarem a esquemas de roteamento existentes.
Propriedades principais
- RelyingParty (RPID / RPName) – Nome DNS obrigatório que identifica o domínio lógico das credenciais. Garanta que ele corresponda ao domínio efetivo da sua aplicação.
- Origins & TopOrigins – Listas separadas por ponto e vírgula de origens válidas.
Originscobre os domínios primários;TopOriginsé usado ao incorporar em iframes. - AllowCrossOrigins – Se definido como
True, iframes de origem cruzada podem solicitar autenticação. Isso exigeTopOriginscuidadosamente curado e validação no lado do servidor. - Algorithms – Identificadores de algoritmo COSE suportados (por exemplo,
ES256,RS256,EdDSA). Isso controla quais tipos de chave pública o servidor aceitará. - TimeoutMS – Timeout sugerido ao cliente para concluir operações WebAuthn.
- UserVerification – Política para verificação do usuário (
preferred,required,discouraged). - Attestation – Especifica se o attestation é none, indirect ou direct. O attestation direto exige validação da cadeia de certificados de attestation.
- Metadata Service (MDS) – Quando habilitado, o componente consulta arquivos do FIDO Metadata Service para confirmar a confiabilidade do modelo do autenticador. Campos:
MDS_FileName– JSON de metadados em cache local (baixado da FIDO).RootCert_FileName– Certificado raiz para verificar assinaturas de metadados.
- ChallengeOptions – Permite comprimento personalizado e fonte de aleatoriedade para os desafios gerados.
- CredentialStorage – Embora não seja uma propriedade direta, o componente espera que a aplicação persista as chaves públicas das credenciais, os contadores de assinatura e os user handles.
Ciclo de vida dos eventos
Registro
OnWebAuthnRegistrationOptionsRequest(Sender, Request, Response): inspeciona o nome de usuário, aborta se inválido ou fornece informações do usuário.OnWebAuthnRegistrationOptionsResponse(Sender, Request, Response): modifica o desafio ou define critérios de seleção do autenticador antes de enviar ao cliente.OnWebAuthnRegistrationVerify(Sender, Credential, var Success): realiza verificações de attestation personalizadas ou veta o registro.OnWebAuthnRegistrationSuccessful(Sender, Credential): armazena o ID da credencial, a chave pública, o contador de assinatura e o user handle em seu banco de dados.OnWebAuthnRegistrationError(Sender, ErrorCode, ErrorMsg): registra em log ou retorna erros mais descritivos.
Autenticação
OnWebAuthnAuthenticationOptionsRequest(Sender, Request, Response): consulta os IDs de credencial para o nome de usuário, decide os transportes permitidos (USB, NFC, BLE, interno).OnWebAuthnAuthenticationOptionsResponse(Sender, Request, Response): personalizaUserVerification, ajusta o comprimento do desafio ou incorpora metadados adicionais.OnWebAuthnAuthenticationVerify(Sender, Credential, var Success): valida a progressão do contador de assinatura, aplica verificações de status da conta.OnWebAuthnAuthenticationSuccessful(Sender, Credential): atualiza o contador de assinatura e produz tokens de sessão.OnWebAuthnAuthenticationError(Sender, ErrorCode, ErrorMsg): implementa rate limiting, políticas de bloqueio e auditoria.
Esses eventos permitem controle refinado sobre cada etapa do protocolo, desde a geração de opções até o processamento de asserções.
