#android #android-biometric-prompt #android-biometric
#Android #android-биометрическая подсказка #android-биометрический
Вопрос:
У меня есть приложение, которое использует BiometricPrompt для реализации аутентификации на основе биометрии. Я отметил, что некоторые устройства предлагают распознавание радужной оболочки / лица в качестве опции наряду со сканированием отпечатков пальцев.
Я хочу, чтобы мое приложение разрешало только сканирование отпечатков пальцев. Возможно ли разрешить только это? В качестве альтернативы, можно ли определить, какой метод пользователь выбрал для аутентификации, чтобы я мог отклонить запрос в моем коде обратного вызова?
Комментарии:
1. В настоящее время я не знаю, как это сделать при использовании
BiometricPrompt
. Пока вы можете использовать старыйFingerprintManager
класс (да, он устарел, но я до сих пор не слышал о каких-либо планах по его удалению). Одним из недостатков использованияFingerprintManager
является то, что у вас может быть меньше контроля над отображением приглашения на устройствах с сенсорами отпечатков пальцев на экране.2. здравствуйте, вы нашли какое-либо решение?
3. Привет, вы нашли какое-либо решение? Я также хочу удалить идентификатор лица и разрешить только touch id.
Ответ №1:
Согласно последним документам Android Biometric API, невозможно разрешить только сканирование отпечатков пальцев.
Ответ №2:
Наконец-то найдено решение этой проблемы -> setAllowedAuthenticators (BiometricManager.Аутентификаторы.BIOMETRIC_STRONG) сделал свое дело
BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder()
.setTitle("Confirm to authenticate")
.setDescription("Touch the fingerprint sensor")
.setNegativeButtonText("Cancel")
.setAllowedAuthenticators(BiometricManager.Authenticators.BIOMETRIC_STRONG)
.build();
biometricPrompt.authenticate(promptInfo);
Ответ №3:
Передайте CryptoObject в authenticate
методе, чтобы включить строгую аутентификацию. В Android существуют разные показатели для лица / радужной оболочки и отпечатка пальца.
Комментарии:
1. Я уже передал криптообъект (AES / CBC / PCKS7) в метод аутентификации. Я не уверен, как это поможет полностью отключить сканирование радужной оболочки / лица? Я знаю, что API 30 позволяет запрашивать BIOMETRIC_STRONG через setAllowedAuthenticators (int), но я хочу разрешить аутентификацию по отпечатку пальца независимо от того, что OEM сообщает как «сильное» (по соображениям соответствия в отрасли, в которой работает приложение)
2. CDD требует, чтобы все «надежные» биометрические данные соответствовали точно таким же рекомендациям по соблюдению. Это верно для всех OEM-производителей и всех устройств.
Ответ №4:
Мое беспокойство неверно.
Вот официальное слово:
Хотя для разблокировки устройства будут разрешены как сильные, так и слабые биометрические данные, слабые биометрические данные:
Требуется, чтобы пользователь повторно ввел свой основной PIN-код, шаблон, пароль или надежные биометрические данные, чтобы разблокировать устройство после 4-часового периода бездействия, например, когда оставлен за столом или зарядным устройством. Это в дополнение к 72-часовому таймауту, который применяется как для сильной, так и для слабой биометрии.
Не поддерживаются готовящимся к выпуску BiometricPrompt API, общим API для разработчиков приложений для безопасной аутентификации пользователей на устройстве независимо от способа.
Не удается аутентифицировать платежи или участвовать в других транзакциях, связанных с ключом авторизации хранилища ключей.
Необходимо показывать пользователям предупреждение, в котором излагаются риски использования биометрических данных, прежде чем его можно будет включить.
Эти меры предназначены для обеспечения более слабой биометрии при одновременном снижении риска несанкционированного доступа.
https://android-developers.googleblog.com/2018/06/better-biometrics-in-android-p.html