Esta requisição de opções de registro é essencial para inicializar o registro WebAuthn com segurança. Ela solicita ao servidor para:
O navegador deve obter as opções de criação de credencial do servidor para iniciar um registro seguro de credencial WebAuthn. Isso normalmente é feito através de uma requisição HTTPS POST do navegador para um endpoint do servidor (por exemplo, /sgcWebAuthn/Registration/Options), que prepara parâmetros como o challenge, RP ID e informações do usuário.
O corpo da requisição contém dados que identificam o usuário e possivelmente fornecem preferências de configuração. Frequentemente, ele se parece com isto:
{
"username": "alice@example.com",
"displayName": "Alice Smith",
"authenticatorSelection": {
"authenticatorAttachment": "platform", // optional: platform or cross-platform
"userVerification": "preferred" // optional: required | preferred | discouraged
},
"attestation": "none", // or "direct", "indirect"
"residentKey": "discouraged" // optional
}
O Componente Servidor WebAuthn escuta no endpoint configurado na propriedade EndpointOptions.RegistrationOptions a requisição inicial do navegador para obter um PublicKeyCredentialCreationOptions. Quando o servidor recebe uma nova Requisição HTTP, o evento OnWebAuthnRegistrationOptionsRequest é chamado e você pode acessar a requisição enviada pelo cliente e cancelar a requisição definindo o parâmetro Accept como False.
procedure OnWebAuthnRegistrationOptionsRequest(Sender: TObject; const aRequest: TsgcWebAuthn_RegistrationOptions_Request; var Accept: Boolean);
begin
if aRequest.Username = 'anonymous' then
Accept := False;
end;