setUserAuthenticationValidityDurationSeconds не работает с BiometricPrompt

Я реализовал биометрическую аутентификацию с помощью BiometricPrompt (androidx). Это работает хорошо, но я могу использовать ключ только один раз. Если я пытаюсь использовать его второй раз сразу после первого - я получаю исключение UserNotAuthenticatedException. Для создания ключа я использую этот код:

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()

Я тоже пытаюсь добавить .setUserAuthenticationValidityDurationSeconds(10) чтобы решить мою проблему. Но работает только после разблокировки устройства кнопкой питания. И не работает запрос BiometricPrompt. Это похоже на ошибку. Решение существует?

1 ответ

setUserAuthenticationRequired(true) подразумевает, что только биометрические данные будут использоваться для аутентификации пользователя при использовании ключа.

Настройка на false (не рекомендуется) и .setUserAuthenticationValidityDurationSeconds(10) позволяет использовать другие более слабые механизмы аутентификации, такие как PIN, для аутентификации пользователя для использования ключа как можно больше раз в течение этого времени.

Другие вопросы по тегам