3 votes

SetUserAuthenticationValidityDurationSeconds ne fonctionne pas avec BiometricPrompt

Je mets en œuvre l'authentification biométrique avec BiometricPrompt (androidx). Cela fonctionne bien mais je ne peux utiliser la clé qu'une seule fois. Si j'essaie de l'utiliser une deuxième fois immédiatement après la première fois, je reçois une exception UserNotAuthenticatedException. Pour la création de clé, j'utilise ce code :

KeyGenParameterSpec.Builder(alias, KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT)
    .setDigests(KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA512)
    .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP)
    .setUserAuthenticationRequired(true)
    .build()

J'essaie également d'ajouter .setUserAuthenticationValidityDurationSeconds(10) pour résoudre mon problème. Mais cela ne fonctionne que après avoir déverrouillé l'appareil en utilisant le bouton d'alimentation. Et ne fonctionne pas avec la demande BiometricPrompt. Cela ressemble à un bug. Existe-t-il une solution ?

0voto

eosimosu Points 1085

setUserAuthenticationRequired(true) implique que seul la biométrie sera utilisée pour authentifier l'utilisateur pour l'utilisation de la clé.

Le réglage à false (non recommandé) et .setUserAuthenticationValidityDurationSeconds(10) permet à d'autres mécanismes d'authentification plus faibles comme le code PIN d'être utilisés pour authentifier l'utilisateur pour l'utilisation de la clé autant de fois que possible pendant cette durée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X