Ajoutez une authentification par empreinte digitale à votre application, à l'aide de BiometricPrompt

Auteur: Lewis Jackson
Date De Création: 13 Peut 2021
Date De Mise À Jour: 1 Juillet 2024
Anonim
Ajoutez une authentification par empreinte digitale à votre application, à l'aide de BiometricPrompt - Applications
Ajoutez une authentification par empreinte digitale à votre application, à l'aide de BiometricPrompt - Applications

Contenu


Utilisons l’API BiometricPrompt pour créer une application qui permettra à l’utilisateur de confirmer son identité en utilisant une empreinte digitale.

Ouvrez Android Studio et créez un nouveau projet à l'aide du modèle «Activité vide». Lorsque vous y êtes invité, définissez le SDK minimum de votre projet sur 28 ou plus, afin d’empêcher l’installation de votre application sur une version antérieure à Android Pie.

Si vous souhaitez rendre votre application accessible à un plus grand nombre de périphériques Android, vous devez vérifier la version d'Android sur laquelle votre application est actuellement installée, puis gérer l'authentification biométrique différemment, en fonction du niveau d'API du périphérique.

Ajouter la bibliothèque biométrique

Pour commencer, ouvrez votre fichier build.gradle au niveau du module, puis ajoutez la dernière version de la bibliothèque Biometric en tant que dépendance de projet:


dépendances {implémentation androidx.biometric: biometric: 1.0.0-alpha03

Ajouter l'autorisation USE_BIOMETRIC

L'API BiometricPrompt vous permet d'exploiter toutes les méthodes d'authentification biométrique prises en charge par le périphérique, via une seule autorisation.

Ouvrez le manifeste de votre projet et ajoutez l’autorisation «USE_BIOMETRIC»:

Créez la mise en page de votre application

Ensuite, créons la disposition de notre application. Je vais ajouter un seul bouton qui, une fois tapé, ouvrira la boîte de dialogue d'authentification par empreinte digitale:

Ouvrez le fichier strings.xml de votre projet et ajoutez la ressource chaîne «auth»:


BiometricPromptSample Authentifier avec empreinte digitale

Authentification de l’identité de l’utilisateur

Voyons maintenant comment vous avez authentifié l’identité de l’utilisateur à l’aide de BiometricPrompt.

Créer une instance d'invite biométrique

La classe BiometricPrompt inclut une classe compagnon Builder (), que vous pouvez utiliser pour créer une instance BiometricPrompt et lancer l'authentification:

final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder ()

Lors de la création de votre instance BiometricPrompt, vous devez définir le texte devant apparaître dans la boîte de dialogue d’authentification et personnaliser le «bouton négatif», qui permet à l’utilisateur d’annuler l’authentification.

Pour configurer la boîte de dialogue d’authentification, vous devez fournir les éléments suivants:

  • setTitle. Titre de l'invite d'authentification par empreinte digitale. (Champs obligatoires)
  • setSubtitle. Le sous-titre de l'invite d'authentification d'empreinte digitale. (Optionnel)
  • setDescription. Une description supplémentaire qui sera affichée dans votre boîte de dialogue d’authentification. (Optionnel)
  • setNegativeButton (texte, exécuteur, écouteur). Il s’agit du libellé du bouton négatif, par exemple, «Annuler» ou «Quitter». Lors de la configuration du bouton négatif, vous devez également fournir une instance Executor et un OnClickListener afin que l’utilisateur puisse fermer la boîte de dialogue d’authentification.

Au moment de la rédaction, il n’était pas possible de personnaliser l’icône ou l’erreur utilisée dans la boîte de dialogue d’authentification.

Enfin, vous devrez appeler build (). Cela nous donne les éléments suivants:

final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () .setTitle ("Le texte du titre va ici") .setSubtitle ("Le sous-titre va ici") .setDescription ("Ceci est la description") .setNegativeButtonText ("Cancel") .construire();

Gérer les rappels d'authentification

Un ensemble de méthodes de rappel d’authentification est attribué à l’instance BiometricPrompt qui informera votre application des résultats du processus d’authentification.

Vous devrez regrouper tous ces rappels dans une instance de la classe BiometricPrompt.AuthenticationCallback:

BiometricPrompt final myMiometricPrompt = new BiometricPrompt (activité, newExecutor, nouveau BiometricPrompt.AuthenticationCallback () {

L'étape suivante consiste à implémenter une partie ou l'ensemble des méthodes de rappel suivantes:

1. onAuthenticationSucceeded ()

Cette méthode est appelée lorsque l'empreinte digitale est correctement associée à l'une des empreintes digitales enregistrées sur le périphérique. Dans ce scénario, un objet AuthenticationResult est transmis au rappel onAuthenticationSucceeded et votre application effectuera ensuite une tâche en réponse à cette authentification réussie.

Pour vous aider à garder les choses simples, notre application répondra en imprimant un fichier Logcat d’Android Studio:

@Override public nul onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult result) {super.onAuthenticationSucceeded (result); Log.d (TAG, "L'empreinte digitale a été reconnue avec succès"); }

2. onAuthenticationFailed ()

Cette méthode est déclenchée lorsque l’analyse est terminée mais que l’empreinte digitale ne correspond à aucune des impressions enregistrées sur le périphérique. Encore une fois, notre application répondra à cet événement d'authentification en imprimant un fichier à Logcat:

@Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); Log.d (TAG, "Empreinte digitale non reconnue"); }

3. onAuthenticationError

Ce rappel est déclenché chaque fois qu'une erreur irrémédiable se produit et que l'authentification ne peut pas aboutir. Par exemple, le capteur tactile de l'appareil est peut-être recouvert de saleté ou de graisse, l'utilisateur n'a enregistré aucune empreinte digitale sur cet appareil ou la mémoire disponible est insuffisante pour effectuer une analyse biométrique complète.

Voici le code que j'utiliserai dans mon application:

@Override public void onAuthenticationError (int errorCode, @NonNull CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {Log.d (TAG, "Une erreur irrémédiable s'est produite"); }}

4. onAuthenticationHelp

La méthode onAuthenticationHelp est appelée chaque fois qu'une erreur non fatale se produit. Elle inclut un code d'aide et un code fournissant des informations supplémentaires sur l'erreur.

Pour que notre code reste simple, je n’utiliserai pas onAuthenticationHelp dans notre application, mais une implémentation ressemblerait à ceci:

@Override public void onAuthenticationHelp (int helpCode, CharSequence helpString) {super.onAuthenticationHelp (helpCode, helpString); biometricCallback.onAuthenticationHelp (helpCode, helpString); }

Enfin, nous devons appeler la méthode authenticate () de l'instance BiometricPrompt:

myBiometricPrompt.authenticate (promptInfo);

Mise en œuvre de l’authentification biométrique d’Android Pie

Une fois que vous avez terminé toutes les étapes ci-dessus, votre MainActivity devrait ressembler à ceci:

importer androidx.appcompat.app.AppCompatActivity; import androidx.biometric.BiometricPrompt; importer android.os.Bundle; importer java.util.concurrent.Executor; importer java.util.concurrent.Executors; import androidx.fragment.app.FragmentActivity; importer android.util.Log; importer android.view.View; import androidx.annotation.NonNull; Classe publique MainActivity étend AppCompatActivity {private static final String TAG = MainActivity.class.getName (); @Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); // Créer un pool de threads avec un seul thread // Executor newExecutor = Executors.newSingleThreadExecutor (); Activité FragmentActivity = this; // Commencez à écouter les événements d'authentification // final BiometricPrompt myBiometricPrompt = new BiometricPrompt (activité, newExecutor, nouveau BiometricPrompt.AuthenticationCallback () {@Override // onAuthenticationError est appelé en cas d'erreur grave // ​​annulation mortelle publique :: ann void publicAuthenticationError CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {// Imprimer a dans Logcat // Log.d (TAG, "Une erreur irrécupérable s'est produite)}} // onAuthenticationSucceeded est appelé lorsqu'une empreinte digitale est appariée avec succès // @Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult result) {super.onAuthenticationSucceeded (result); // Imprimer un élément dans Logcat // Log.d (TAG, "Finger" reconnu avec succès ");} // onAuthenticationFailed est appelé lorsque l'empreinte digitale ne correspond pas // @Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); // Imprimer un journal cat // Log.d (TAG, "Empreinte digitale non reconnue"); }}); // Créer l'instance BiometricPrompt // final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () // Ajouter du texte à la boîte de dialogue // .setTitle ("Le texte du titre va ici") .setSubtitle ("Le sous-titre va ici") ) .setDescription ("Ceci est la description") .setNegativeButtonText ("Cancel") // Construit le dialogue // .build (); // Assigne un onClickListener au bouton "Authentification" de l'application // findViewById (R.id.launchAuthentication) .setOnClickListener (nouvelle View.OnClickListener () {@Override public void onClick (View v) {myBiometricPrompt.authenticate (promptInfo);} }); }}

Tester votre projet

Maintenant que vous avez créé votre projet, il est temps de le tester et de voir s'il ajoute réellement l'authentification par empreinte digitale à votre application!

Pour exécuter ce projet, vous avez besoin d’un smartphone ou d’une tablette physique sous Android Pie ou d’un périphérique virtuel Android (AVD) utilisant l’aperçu Android P ou supérieur.

Vous devrez également enregistrer au moins une empreinte digitale sur votre appareil. Si vous utilisez un appareil Android physique, alors:

  • Sécurisez votre lockscreen avec un code PIN, un mot de passe ou un motif, si vous ne l’avez pas déjà fait (en allant dans «Paramètres> Écran verrouillé et sécurité> Type de verrouillage d’écran> Motif / Code PIN / Mot de passe» puis en suivant les instructions à l’écran).
  • Lancez l’application «Paramètres» de votre appareil.
  • Sélectionnez "Verrouiller l'écran et la sécurité".
  • Sélectionnez «Scanner d'empreintes digitales».
  • Suivez les instructions pour enregistrer une ou plusieurs empreintes digitales.

Les appareils virtuels Android n’ont pas de capteur tactile physique. Vous devez donc simuler un événement tactile:

  • Lancez votre AVD, si vous ne l’avez pas déjà fait.
  • À côté de l’AVD, vous verrez une bande de boutons. Recherchez le bouton «Plus» en trois points (où se trouve le curseur dans la capture d'écran suivante) et cliquez dessus. Ceci lance la fenêtre “Contrôles étendus”.
  • Dans la fenêtre Contrôles étendus, sélectionnez «Empreinte digitale». Cela ouvre un ensemble de contrôles dans lesquels vous pouvez émuler divers événements tactiles.
  • Ouvrez le menu déroulant et choisissez l'empreinte que vous souhaitez enregistrer sur ce périphérique. J'utilise “Finger 1.”
  • Passons maintenant à l’émulation du périphérique émulé. Lancez l’application «Settings» de l’AVD et sélectionnez «Security & location».
  • Si vous n'avez pas encore configuré de code PIN, de mot de passe ou de modèle, sélectionnez «Verrouillage de l'écran» et suivez les instructions à l'écran pour sécuriser votre écran de verrouillage, puis revenez à l'écran principal «Paramètres> Sécurité et emplacement».
  • Sélectionnez «Fingerprint», puis «Add fingerprint».
  • Vous serez maintenant invité à appuyer votre doigt sur le capteur tactile. Continuez à cliquer sur «Touchez le capteur» jusqu'à ce que vous voyiez une «empreinte digitale ajoutée».

  • Cliquez sur "Terminé".
  • Si vous souhaitez enregistrer des empreintes digitales supplémentaires, rincez et répétez les étapes ci-dessus.

Une fois que vous avez enregistré au moins une empreinte digitale, vous êtes prêt à tester votre application. Je vais tester comment notre application gère trois scénarios différents:

  • L'utilisateur tente de s'authentifier à l'aide d'une empreinte digitale enregistrée.
  • L’utilisateur tente de s’authentifier à l’aide d’une empreinte digitale non enregistrée sur ce périphérique.
  • L'utilisateur tente de s'authentifier en utilisant des empreintes digitales non enregistrées, plusieurs fois et successivement.

Essayons de nous authentifier en utilisant l’empreinte digitale que nous venons d’enregistrer sur notre appareil:

  • Assurez-vous d’afficher le moniteur Logcat d’Android Studio, car c’est là que les diverses applications de votre application apparaissent.

  • Installez votre application sur le périphérique de test.
  • Appuyez sur le bouton «Authentifier avec empreinte» de votre application. La boîte de dialogue d'authentification par empreinte digitale apparaîtra.
  • Si vous utilisez un périphérique physique, appuyez et maintenez votre doigt contre le capteur tactile du périphérique. Si vous utilisez un DAV, utilisez le bouton «Touchez le capteur» pour simuler un événement tactile.
  • Vérifiez le moniteur Logcat. Si l’authentification a réussi, le message suivant devrait s'afficher: «L’empreinte digitale a été reconnue avec succès»

Voyons ensuite ce qui se passe si nous essayons de nous authentifier à l’aide d’une empreinte digitale non enregistrée sur ce périphérique:

  • Appuyez à nouveau sur le bouton «Authentifier avec empreinte» de l'application.
  • Si vous utilisez un DAV, utilisez la fenêtre «Contrôles étendus» pour sélectionner une empreinte qui n'est pas enregistré sur cet appareil; J'utilise «Finger 2.». Cliquez sur le bouton «Touchez le capteur».
  • Si vous utilisez un smartphone ou une tablette Android physique, appuyez et maintenez votre doigt contre le capteur tactile de l'appareil. Assurez-vous que vous utilisez un doigt qui n'est pas enregistré sur cet appareil!
  • Vérifiez le logcat d’Android Studio, il devrait maintenant afficher une «empreinte digitale non reconnue».

Comme déjà mentionné, l’API BiometricPrompt gère automatiquement les tentatives d’authentification infructueuses excessives. Pour tester cette fonctionnalité:

  • Appuyez sur le bouton «Authentifier avec empreinte digitale» de votre application.
  • Essayez d’authentifier plusieurs fois de suite en succession rapide, en utilisant une empreinte digitale non enregistrée.
  • Après quelques tentatives, la boîte de dialogue devrait se fermer automatiquement. Vérifiez le Logcat d’Android Studio et le message suivant apparaît: «Une erreur irrémédiable s’est produite.»

Vous pouvez télécharger l'application complète à partir de GitHub.

Emballer

Dans cet article, nous avons exploré la nouvelle API BiometricPrompt d’Android Pie, qui vous permet d’ajouter facilement une authentification par empreinte digitale à votre application. Pensez-vous que BiometricPrompt est une amélioration des méthodes d’authentification d’empreintes digitales précédentes d’Android? Faites-nous savoir dans les commentaires ci-dessous!

Wear O e trouve dan une poition délicate: le grande entreprie de mode et le marque technologique publient le montre intelligente Wear O, mai Google ne emble pa trop ’engager pour la plate-forme. ...

i vou ouhaitez offrir à une peronne une montre intelligente (ou une cadeau pour vou-même), un contrat avec Foil port et en cour de négociation ur le ite Web officiel de Foil. À l&#...

Intéressant Sur Le Site