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, для аутентификации пользователя для использования ключа как можно больше раз в течение этого времени.