L’API BiometricPrompt unifie l’authentification sous Android

L’API BiometricPrompt unifie l’authentification biométrique sur Android et simplifie le travail des développeurs. Cet outil réduit la fragmentation et propose une interface système uniforme pour empreinte et reconnaissance faciale. Je présente des étapes pratiques, des exemples de code conceptuels et des choix de sécurité applicables immédiatement.

Le parcours couvre la vérification matérielle, l’affichage du dialogue et la gestion des clés cryptographiques. Je fournis des cas d’usage, des listes d’actions et des conseils pour une authentification forte en production. Les éléments essentiels suivent dans la section A retenir :

A retenir :

  • Capteur présent, empreinte enregistrée, permissions accordées, version Android compatible
  • BiometricPrompt System UI unifiée pour empreinte et reconnaissance faciale
  • Chiffrement de jeton via Android Keystore et Cipher GCM
  • Gestion des erreurs et codes BIOMETRIC_ERROR pour robustesse applicative

Prérequis Android pour BiometricPrompt et vérifications préalables

Après A retenir, commençons par valider le matériel et les permissions nécessaires. Sur Android, le support d’empreinte digitale remonte habituellement à Android 6.0 et plus, tandis que BiometricPrompt apporte une interface standard. Il convient de vérifier aussi que l’utilisateur a enregistré au moins une donnée biométrique avant d’afficher un dialogue.

A lire également :  Le mode sombre préserve l'autonomie des écrans AMOLED sous Android

Type Support Android Sécurité relative Remarque
Empreinte digitale Android 6.0+ Élevée lorsqu’implémentée par TEE Capteurs variables selon fabricant
Reconnaissance faciale Variable selon appareil Moyenne à élevée selon capteur hardware Certaines implémentations moins robustes
Iris Matériel dédié Élevée Peu répandu sur smartphones
BiometricPrompt API Android 9 (P) et AndroidX Unification UI et politique de sécurité Standardise l’interface pour développeurs

Vérifier la présence du capteur et les permissions

Ce contrôle confirme que le périphérique dispose du capteur requis et que l’utilisateur est prêt. Il faut interroger les fonctionnalités via PackageManager et valider la présence d’au moins une empreinte enregistrée. Selon Android Developers, la vérification préliminaire évite des erreurs utilisateur et des erreurs système récurrentes.

Contrôles à exécuter :

  • Vérifier FEATURE_FINGERPRINT et FEATURE_BIOMETRIC
  • Contrôler que l’utilisateur a des empreintes enregistrées
  • Vérifier permissions et état du capteur matériel
  • Permettre fallback PIN ou mot de passe si nécessaire

Gérer l’enregistrement biométrique et l’état utilisateur

Cette étape relie la vérification matérielle à l’expérience utilisateur finale lors de l’authentification. Il faut guider l’utilisateur pour ajouter une empreinte ou activer la reconnaissance faciale si l’appareil le permet. Selon Android Open Source Project, informer clairement optimise les taux d’activation et réduit le support technique.

A lire également :  Android 15 : tout ce qu’il faut savoir sur la prochaine mise à jour

« J’ai ajouté la vérification initiale et les annulations explicites, ce qui a réduit les erreurs de connexion. »

Alice N.

Afficher le dialogue BiometricPrompt et personnalisation UI

La vérification initiale préparée, l’étape suivante consiste à afficher un dialogue système cohérent pour l’utilisateur. BiometricPrompt propose un constructeur avec setTitle, setSubtitle, setDescription et setNegativeButton pour configurer l’UI. Selon Google, la bibliothèque AndroidX permet d’étendre le support sur des versions antérieures tout en conservant une UI système homogène.

Composer le PromptInfo et options obligatoires

Ce passage décrit les éléments de PromptInfo et leurs contraintes d’usage avec BiometricPrompt. Il faut obligatoirement fournir un titre et un bouton négatif, et on ne peut pas remplacer l’icône système ni certains messages d’erreur. L’interface simplifie l’ergonomie mais limite la personnalisation visuelle pour préserver la sécurité.

Paramètres à définir :

  • Titre clair et centré utilisateur
  • Sous-titre facultatif pour contexte d’usage
  • Description concise expliquant l’action
  • Bouton négatif pour annulation explicite

Gérer les callbacks d’authentification et les codes d’erreur

A lire également :  Les meilleures applications Android gratuites de juillet 2025

Ce point relie l’UI aux comportements techniques en cas d’échec ou succès de l’authentification. BiometricPrompt.AuthenticationCallback expose onAuthenticationSucceeded, onAuthenticationFailed, onAuthenticationError et onAuthenticationHelp. Selon Android documentation, il convient d’implémenter des chemins clairs pour chaque code d’erreur afin d’assurer la robustesse applicative.

Code Signification Comportement recommandé
BIOMETRIC_ERROR_LOCKOUT Tentatives excessives Désactiver temporairement et informer l’utilisateur
BIOMETRIC_ERROR_NO_BIOMETRICS Aucune donnée biométrique Proposer enregistrement biométrique ou fallback mot de passe
BIOMETRIC_ERROR_HW_NOT_PRESENT Pas de capteur Basculer sur authentification classique
BIOMETRIC_ACQUIRED_IMAGER_DIRTY Image bruitée Demander nettoyage du capteur et réessai

« L’adoption du dialogue standard a réduit les messages d’erreur incohérents sur plusieurs appareils. »

Marc N.

Cryptographie, Keystore et gestion du jeton utilisateur

Après l’UI et les callbacks, l’attention se porte sur la protection du jeton et des clés à l’aide du Keystore. La stratégie habituelle chiffre un jeton serveur avec une clé liée à la biométrie et stocke le résultat localement en toute sécurité. Selon Android Developers, l’usage d’AES-GCM et d’Android Keystore réduit les risques d’exfiltration hors de l’appareil.

Conception du CryptographyManager et clé protégée

Ce volet détaille la classe responsable du chiffrement, du déchiffrement et de la gestion de clés. Il faut créer une clé dans Android Keystore via KeyGenParameterSpec et configurer un Cipher en mode GCM sécurisé. La clé doit être générée pour l’usage biométrique et marquée pour nécessiter l’authentification utilisateur avant utilisation.

Opérations à implémenter :

  • Générer clé AES via KeyGenParameterSpec
  • Initialiser Cipher pour encryption et decryption
  • Envelopper données chiffrées avec IV stocké
  • Stocker CipherTextWrapper dans SharedPreferences

Flux de chiffrement/déchiffrement dans l’activité de connexion

Ce passage relie le CryptographyManager à l’expérience de connexion via BiometricPrompt. À l’activation, l’application chiffre le jeton et le stocke; ensuite l’utilisateur déverrouille le jeton avec sa biométrie pour la session suivante. Selon plusieurs retours d’expérience, ce schéma améliore la fluidité d’usage sans affaiblir la sécurité cryptographique.

« J’ai chiffré le token avec AES-GCM et la biométrie a permis un déverrouillage transparent. »

Lucie N.

« L’unification via BiometricPrompt a permis une maintenance plus simple et des audits de sécurité plus propres. »

Paul N.

Source : Android Developers, « BiometricPrompt API », Android Developers, 2018.

Articles sur ce même sujet

Laisser un commentaire