TsgcWSAPIServer_WebAuthn

Apenas o OpenSSL 3.

Introdução

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

 

O WebAuthn requer o uso de conexões seguras (SSL/TLS), portanto as bibliotecas OpenSSL devem ser implantadas e configuradas com o servidor.

 

Apenas a OpenSSL 3.0.0+ API é suportada, portanto versões anteriores do OpenSSL podem não funcionar.

 

Configuração

 

O TsgcWSAPIServer_WebAuthn deve ser anexado a um servidor HTTP, TsgcWebSocketHTTP_Server ou TsgcWebSocketServer_HTTPAPI utilizando a propriedade Server. Você pode configurar os endpoints do servidor que tratarão as opções de registro e autenticação, e as opções do WebAuthn, como algoritmos suportados, origins e muito mais.

 

Endpoints Options

Aqui você pode configurar os endpoints do servidor que tratarão as requisições HTTP/JavaScript para utilizar o WebAuthn como autenticador. O componente já vem configurado com endpoints padrão, mas você pode alterar todos eles para atender às suas necessidades.

 

 

Exemplo: se o seu servidor está escutando no domínio www.test.com, a requisição às opções de autenticação por padrão será http://www.test.com/sgcWebAuthn/Authentication/Options

 

WebAuthn Options

Nesta propriedade, você pode configurar as principais opções do Componente Servidor WebAuthn.

 

 

O WebAuthn utiliza origens para impor restrições da política de mesma origem, que são essenciais para prevenir ataques de phishing e cross-site. Durante os processos de registro e autenticação WebAuthn, a origem é estritamente validada pelo navegador e pelo authenticator.

 

 

 

No WebAuthn, crossOrigin é um parâmetro booleano que indica se a operação WebAuthn está sendo realizada a partir de um contexto cross-origin, como um iframe incorporado de uma origem diferente do contexto de navegação de nível superior.

Este parâmetro foi introduzido para ajudar navegadores e authenticators a tratar requisições de autenticação com segurança em ambientes embarcados—um cenário comum em aplicações web modernas.

 

 

O WebAuthn suporta uma variedade de algoritmos criptográficos para geração e verificação de credenciais de chave pública. Esses algoritmos são utilizados durante o registro de credenciais (com navigator.credentials.create()) e a autenticação (com navigator.credentials.get()), e garantem a assinatura e validação seguras dos desafios utilizando pares de chaves assimétricas. O servidor é configurado por padrão com o ES256 e RS256, que são os algoritmos mais comuns. Você pode alterar a qualquer momento quais algoritmos são suportados pela propriedade Algorithms. Os seguintes algoritmos são suportados:

 

 

No WebAuthn, attestation é um mecanismo opcional que permite ao authenticator (por exemplo, dispositivo ou chave de segurança) fornecer informações sobre seu fabricante, modelo e características de segurança durante a criação da credencial. Essas informações ajudam o Relying Party (RP) a decidir se deve confiar no authenticator.

 

Diferentes formatos de atestação definem como esses dados são estruturados e verificados. Três formatos comumente utilizados são android-key, packed, e outros como fido-u2f, apple ou none. Por padrão, todos os formatos de atestação estão habilitados. Você pode encontrar abaixo a lista de formatos de atestação suportados:

 

 

 

 

 

 

 

Na API WebAuthn, AllowCredentials é um campo opcional utilizado durante o processo de autenticação (via navigator.credentials.get()). Ele especifica uma lista de IDs de credenciais que estão autorizadas a autenticar o usuário para uma Relying Party (RP) específica. Esse mecanismo permite que a RP controle quais credenciais são consideradas válidas para uma tentativa de login. A propriedade credentials possui os seguintes campos:

 

 

 

 

WebAuthn Protocol

 

 

 

 

 

Referência