Autenticação de impressão digital

Este guia discute como adicionar autenticação de impressão digital, introduzida no Android 6.0, a um aplicativo Xamarin.Android.

Visão geral da autenticação de impressão digital

A chegada dos scanners de impressões digitais em dispositivos Android fornece aos aplicativos uma alternativa ao método tradicional de autenticação de usuário/senha. O uso de impressões digitais para autenticar um usuário possibilita que um aplicativo incorpore segurança menos intrusiva do que um nome de usuário e senha.

As APIs do FingerprintManager destinam-se a dispositivos com um scanner de impressão digital e estão executando o nível de API 23 (Android 6.0) ou superior. As APIs são encontradas no Android.Hardware.Fingerprints namespace. A Biblioteca de Suporte do Android v4 fornece versões das APIs de impressão digital destinadas a versões mais antigas do Android. As APIs de compatibilidade são encontradas no Android.Support.v4.Hardware.Fingerprint namespace, são distribuídas por meio do pacote NuGet Xamarin.Android.Support.v4.

O FingerprintManager (e seu equivalente da Biblioteca de Suporte, FingerprintManagerCompat) é a classe principal para usar o hardware de digitalização de impressão digital. Essa classe é um wrapper do SDK do Android em torno do serviço de nível de sistema que gerencia as interações com o próprio hardware. Ele é responsável por iniciar o scanner de impressão digital e por responder ao feedback do scanner. Esta classe tem uma interface bastante simples com apenas três membros:

  • Authenticate – Este método irá inicializar o scanner de hardware e iniciar o serviço em segundo plano, esperando que o usuário digitalize sua impressão digital.
  • EnrolledFingerprints – Esta propriedade retornará true se o usuário tiver registrado uma ou mais impressões digitais com o dispositivo.
  • HardwareDetected – Esta propriedade é usada para determinar se o dispositivo suporta digitalização de impressão digital.

O FingerprintManager.Authenticate método é usado por um aplicativo Android para iniciar o scanner de impressão digital. O trecho a seguir é um exemplo de como invocá-lo usando as APIs de compatibilidade da Biblioteca de Suporte:

// context is any Android.Content.Context instance, typically the Activity
FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.From(context);
fingerprintManager.Authenticate(FingerprintManager.CryptoObject crypto,
                                int flags,
                                CancellationSignal cancel,
                                FingerprintManagerCompat.AuthenticationCallback callback,
                                Handler handler
                               );

Este guia discutirá como usar as FingerprintManager APIs para aprimorar um aplicativo Android com autenticação de impressão digital. Ele abordará como instanciar e criar um CryptoObject para ajudar a proteger os resultados do scanner de impressão digital. Examinaremos como um aplicativo deve subclassificar FingerprintManager.AuthenticationCallback e responder aos comentários do scanner de impressão digital. Finalmente, veremos como registrar uma impressão digital em um dispositivo Android ou emulador e como usar o adb para simular uma varredura de impressão digital.

Requisitos

A autenticação por impressão digital requer Android 6.0 (API nível 23) ou superior e um dispositivo com um scanner de impressão digital.

Uma impressão digital já deve estar registrada no dispositivo para cada usuário a ser autenticado. Isso envolve a configuração de um bloqueio de tela que usa uma senha, PIN, padrão de passar o dedo ou reconhecimento facial. É possível simular algumas das funcionalidades de autenticação de impressão digital em um emulador Android. Para obter mais informações sobre esses dois tópicos, consulte a seção Registrando uma impressão digital .