Ir para o conteúdo principal

[PRATO FÁCIL] Documentação da implementação da leitura biométrica no sistema

Data de elaboração 24/04/2023
Autores
  1. Ariel Veras da Silva
  2. João Vitor Paulino Nobre
  3. Lucas Tavares Viana de Souza
  4. Milton Daniel Yama
Equipe do estudo TURING
Alvo Prato Fácil

Origem

  • Implementação: Conforme o programa do prato fácil se desenvolveu, surgiu a necessidade de adicionar uma camada adicional de segurança para a retirada dos alimentos, além de agilizar o atendimento em uma situação especifica de um novo restaurante cuja demanda necessita adotar uma nova abordagem na verificação e entrega das refeições.
Objetivo Este estudo foi criado para documentar a implementação do modulo de biometria no sistema, desde a tentativa de implementar a leitura via web até a implementação via aplicação local na maquina do cliente além de prover um guia para a instalação e execução.
Documentação correlata Portal de documentação do leitor.
.Net Framework 4.8.1.
Observações A seguinte implementação descrita no estudo e compatível apenas com o software do fabricante do leitor Hamster DX II
Glossário

FIR: A sigla FIR significa Fingerprint Identification Record que é o tipo de dados em que a amostra de impressão digital é representada na SDK.

Payload: Carga útil de um programa ou sistema que realiza uma determinada ação ou tarefa. No contexto da SDK de biometria o payload é uma chave criptográfica armazenada dentro da FIR é e chamada de Payload e pode conter outras informações.

SDK: Standard Development Kit ou Kit de Desenvolvimento de Software, é um conjunto de ferramentas de desenvolvimento de software que facilita o desenvolvimento de aplicativos para uma plataforma específica.

1. Introdução

Esta documentação tem como objetivo fornecer uma visão geral de alto nível sobre a implementação, bem como os detalhes técnicos acerca da instalação e execução da aplicação.

Inicialmente a abordagem para a leitura da biometria seria entregue puramente via web, porém devido a problemas de compatibilidade da SDK do fabricante com a aplicação executando em um container Linux, foi necessário abandonar essa abordagem.

2. Instalação e utilização

Para poder executar a funcionalidade de biometria, é necessário possuir os seguintes requisitos: 

  • Driver do leitor de digital
  • SDK de biometria da fabricante
  • .NET framework 4.8.1

Todos os seguintes requisitos podem ser encontrados na seção de documentação correlata desta pagina, que incluem os tutoriais de instalação deles. Cumprindo os requisitos é necessário que a aplicação esteja executando em segundo plano ao utilizar o sistema.

Os métodos de captura de digital providenciadas pela SDK já contam com uma interface para o usuário.

3. A aplicação de console

A API local executa todas as operações relacionadas a biometria que então se comunica com o sistema web, essa conexão é gerenciada através da classe HttpListener que permite receber e retornar solicitações HTTP recebidas pela porta definida previamente.

image.png

Figura 1. Imagem do console em execução

Todos os dados biométricos são armazenados pelo sistema web, a aplicação recebe os dados apenas para comparação no momento de execução, não sendo mantido nenhum dado localmente.

O kit de desenvolvimento providencia métodos de captura e verificação de múltiplos dedos, que então exporta esse dado como um hash que então é convertido em JSON para envio ao sistema, que então registra o dado vinculado ao beneficiário em questão, a autenticação é feita de forma similar com o sistema web enviando uma lista de beneficiários que possuem dados de biometria em JSON para a API que então confere as digitais em loop até encontrar um "match", retornando o valor do Id do beneficiário correspondente da lista.

4. Interação com sistema web

Para criar uma experiencia de uso integrada, a ativação da interface de captura de digital é invocada pelo sistema web, que então se comunica com a aplicação local para executar a captura/verificação das digitais, essa interação e realizada através de chamadas AJAX com a porta escolhida pela API local. Como a carga de lidar com a validação e captura dos dados de digitais ficam por parte da API, isso permite que o Prato Fácil foque em realizar operações CRUD com a biometria.

image.png

Figura 2. Tela de detalhes onde é realizada o cadastro de biometria

Como dito na seção da aplicação local, a autenticação do usuário é feita com ela recebendo os dados de uma consulta geral por digital dos beneficiários, essa consulta faz uso de cache para evitar problemas com repetidas chamadas da ação que realiza a consulta, mantendo esses dados no cache por até 5 horas para garantir a velocidade e que dure ate o final do horário de entrega dos alimentos.

image.png

Figura 3. Tela de pedidos onde temos a opção de autenticação de biometria

5. Melhorias disponíveis

O projeto é funcional e cumpre com os requisitos do cliente, porem a implementação atual usa apenas das principais funções de captura e verificação ofertadas pela SDK e não faz uso de algumas funções ofertadas que podem elevar a qualidade da experiencia do usuário, alguns exemplos destas funções são:

  • Identificação de qual dedo foi registrado
  • Limitar quantos dedos podem ser registrados
  • Atribuição de payload ao hash de biometria, podendo incluir informações extras na biometria como um nome
  • Customização da interface padrão da captura e verificação de digital

Fica a cargo da equipe do projeto a necessidade de implementação das melhorias listadas.

6. Conclusão

Esta documentação apresenta uma visão geral sobre a implementação, instalação e utilização da aplicação de biometria. Embora inicialmente tenha havido problemas com a abordagem para leitura de biometria via web, a implementação local foi bem-sucedida. A aplicação local funciona em conjunto com o sistema web para armazenar e autenticar os dados biométricos dos beneficiários. Há melhorias disponíveis na SDK que podem ser implementadas no futuro para melhorar a experiência do usuário. No geral, a aplicação atende aos requisitos do cliente e pode ser aprimorada com as melhorias recomendadas.