【问题标题】:Android Biometrics - which approach to choose (fallback to password)?Android Biometrics - 选择哪种方法(回退到密码)?
【发布时间】:2020-01-10 07:37:08
【问题描述】:

我有一个具有 PIN/锁定屏幕的应用程序。为了打开应用程序,用户需要输入他的 PIN 码(他之前在应用程序中设置的)。

我想添加生物识别选项 -> 无需输入 PIN,只需放置您的指纹即可。 但是,您仍然可以选择使用 PIN 作为后备。与 Revolut、LastPass 或许多其他银行应用程序完全相同。很简单,对吧?

我查看了新的生物识别 API,它不支持回退到自定义 pin/密码(仅回退到锁定屏幕)。我可以以某种方式手动添加(当用户取消对话框时),但这会产生糟糕的用户体验(从 Google 样式对话框切换到应用程序样式屏幕)。此外,谷歌对话框有一个透明的背景(可能会泄露敏感信息),所以我需要把它放在一个单独的空白活动中(同样糟糕的体验)。我想知道银行应用程序打算如何迁移到那里?

我应该使用旧方法(FingerprintManager)吗?回退到设备锁定是否足够安全?如果有人知道您的手机 PIN,他就可以访问您的所有应用程序。

【问题讨论】:

  • 我认为 WhatsApp 的实现方式很好。 “但是,您仍然应该可以选择使用 PIN 作为后备。” - 这完全取决于您正在构建的应用程序。如您所知,Whatsapp 没有我认为是安全问题的后备选项。他们必须以自定义方式实现它,而不是使用谷歌生物识别 API。屏幕已满,这对您来说是个优势,因为您不想在后台显示敏感信息。
  • “我可以以某种方式手动添加(当用户取消对话框时),但这会导致用户体验不佳(从 Google 样式对话框切换到应用样式屏幕)。” 对我来说听起来很可取。如果 UI 看起来像正常的设备锁定屏幕,用户可能会认为他们应该输入设备解锁 PIN 而不是应用 PIN。
  • @rafakob “我可以以某种方式手动添加(当用户取消对话框时),但这会导致用户体验不佳(从 Google 样式对话框切换到应用样式屏幕)。” 我想做同样的事情,但我担心的是,在检查onAuthenticationError 中的errorCode == ERROR_NEGATIVE_BUTTON 时,我是否需要创建自己的 DialogPopUp,其中包含电子邮件/用户名和密码编辑文本?

标签: android android-fingerprint-api android-biometric-prompt


【解决方案1】:

你看过this blog post吗?或that one? AndroidX 生物识别库提供了一个名为 setNegativeButtonText() 的方法,如果用户不想使用生物识别,该方法提供了一个使用帐户/应用凭据的选项。

然后在回调中你会这样做

override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
   super.onAuthenticationError(errorCode, errString)
   Log.d(TAG, "$errorCode :: $errString")
   if(errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {
       loginWithAppAccountCredentials() // Because negative button says use application/account password
   }
}

此外,当您的用户单击 UI 中的登录按钮时,您的 onClick 可能如下所示:

override fun onClick(view: View) {
   val promptInfo = createPromptInfo()
   if (BiometricManager.from(context)
               .canAuthenticate() == BiometricManager.BIOMETRIC_SUCCESS) {
       biometricPrompt.authenticate(promptInfo, cryptoObject)
   } else {
       loginWithAppAccountCredentials()
   }
}

【讨论】:

  • Because negative button says use application/account password? 是什么意思用户是否必须使用 App'sCredentials 登录?或者用户是否必须使用他/她设备的 PIN/密码/模式登录?处理BiometricPrompt.ERROR_NEGATIVE_BUTTON 回调时是否需要创建自己的DialogPopUp?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-08
  • 2014-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多