Autenticação de impressão digital

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

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

A chegada de scanners de impressão digital em dispositivos Android fornece aos aplicativos uma alternativa ao método tradicional de nome de usuário/senha da autenticação do usuário. 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 FingerprintManager são direcionadas 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 primária para usar o hardware de verificação de impressão digital. Essa classe é um wrapper do SDK do Android em torno do serviço de nível do sistema que gerencia interações com o próprio hardware. Ele é responsável por iniciar o scanner de impressão digital e responder aos comentários do verificador. Essa classe tem uma interface bastante simples com apenas três membros:

  • Authenticate – Esse método inicializará o verificador de hardware e iniciará o serviço em segundo plano, aguardando que o usuário examine sua impressão digital.
  • EnrolledFingerprints – Essa propriedade retornará true se o usuário tiver registrado uma ou mais impressões digitais com o dispositivo.
  • HardwareDetected – Essa propriedade é usada para determinar se o dispositivo dá suporte à verificação de impressão digital.

O FingerprintManager.Authenticate método é usado por um aplicativo Android para iniciar o scanner de impressão digital. O snippet 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 por 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 ser subclasse FingerprintManager.AuthenticationCallback e responderemos aos comentários do scanner de impressão digital. Por fim, veremos como registrar uma impressão digital em um dispositivo Android ou emulador e como usar o adb para simular uma verificação de impressão digital.

Requisitos

A Autenticação por Impressão Digital requer o Android 6.0 (nível de API 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 que deve 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 Android Emulator. Para obter mais informações sobre esses dois tópicos, consulte a seção Registrando uma impressão digital .