生物识别技术:虹膜和面部识别

12
在博客Android P中更好的生物识别技术中,他们说:“为了保护用户安全,大多数应用程序和设备都具有认证机制或一种证明您是您自己的方法。这些机制分为三类:知识因素、占有因素和生物识别因素。知识因素需要您提供某些你所知道的东西(如PIN码或密码),占有因素需要您提供某些你所拥有的东西(如令牌生成器或安全密钥),而生物识别因素则需要您提供某些你所是的东西(如指纹、虹膜或面孔)”。

但是当我在BiometricPrompt API中阅读时,我没有看到虹膜或面容的文档,认证仅支持指纹:“此调用会预热指纹硬件,显示系统提供的对话框,并开始扫描指纹。当调用BiometricPrompt.AuthenticationCallback.onAuthenticationError(int,CharSequence)时,它将终止...”那么,我该如何使用生物识别技术创建带有虹膜和面部识别的身份验证登录,或者是否有其他解决方案?


2
BiometricPrompt API似乎没有任何方式让开发者选择将要使用的生物识别类型,甚至在身份验证完成后也无法知道类型。这由平台来选择。 - Michael
@Michael,那么BiometricPrompt需要更新了! - Kishan Solanki
2个回答

15

Android 6

  • 引入FingerprintManager类以支持指纹传感器。
  • 开发人员需要构建自己的指纹UI。

Android 9

  • 废弃FingerprintManager类。
  • 引入新的生物识别API以访问OEM设备上可用的各种生物识别硬件。
  • 引入了标准化的指纹UI策略。OEM现在可以自定义UI。应用程序开发人员失去了创建自定义UI的能力。
  • 它仅包括BiometricPrompt类的指纹集成。Fingerprint BiometricPrompt

Android 10

  • 生物识别API现在是AndroidX生物识别库的一部分,这使得所有来自Android 10的生物识别行为都可用于运行Android 6.0(API级别23)或更高版本的所有设备。
  • 包括BiometricPrompt指纹和面部认证集成。指纹和面部认证 BiometricPrompt
  • 引入了BiometricManager类,开发人员可以使用该类查询生物识别身份验证的可用性
    • 如果设备支持多种生物识别技术,用户可以在操作系统设置中指定默认/首选方法。
    • BiometricManager无法提供有关可用方法的信息,它只返回是否至少有一个可用方法。
    • BiometricManager不允许您知道正在使用哪种生物识别方法。
    • BiometricManager不允许您选择首选方法,如果设备支持多种方法。
    • 如果没有生物识别传感器存在,API现在允许开发人员指定是否要改用设备凭据(PIN、图案或密码)。
  • 框架现在为OEM提供友好的、标准化的API,以集成对其设备上所有类型生物识别传感器的支持。
  • 框架现在在Android 10中提供了面部认证的内置支持,因此供应商不需要创建自定义实现。
  • 生物识别库architecture生物识别库体系结构
关于虹膜扫描仪,一些原始设备制造商(例如三星)已经将其虹膜传感器的实现与生物识别API集成。然而,Android目前尚未为OEM提供与虹膜传感器交互的标准API(据我所知),这阻止了基于AOSP的ROM访问虹膜传感器。
在AOSP问题跟踪器中,有一个开放的票据 "添加生物特征虹膜HAL接口",旨在创建一个HAL接口来标准化Android框架与虹膜扫描仪的通信方式。不幸的是,该票据的最后进展是在2018年3月。
更新:Android 11
  • Android 11引入了BiometricManager.Authenticators接口。该接口定义了生物识别硬件元素的可能强度:
    • BIOMETRIC_STRONG:设备上任何符合或超过Android CDD定义的Strong要求的生物识别(例如指纹、虹膜或面容)。
    • BIOMETRIC_WEAK:设备上任何符合或超过Android CDD定义的Weak要求的生物识别(例如指纹、虹膜或面容)。
    • DEVICE_CREDENTIAL:用于保护设备的非生物识别凭据(即PIN码、图案或密码)。
  • ACTION_BIOMETRIC_ENROLL意图操作调用系统设置并请求用户注册生物识别硬件元素。您可以提供额外的强度级别。
  • AuthenticationResult API有一个新方法getAuthenticationType(),允许您检查用户是使用生物识别还是设备凭据进行身份验证。

参考资料


我是否可以从API中知道设备上只有指纹识别硬件还是同时具有指纹识别和面容识别?我正在使用Q10,似乎无法检测到它。 - Morse
2
BiometricManager 不会提供有关可用方法的信息,它只会返回是否至少有一个可用。 - David Miguel
谢谢。希望他们添加那个API。 - Morse
@DavidMiguel:在Android 10设备中,人脸识别是否需要Soli芯片才能正常工作? - Shanker
@DavidMiguel,在Settings类中是否有任何常量可用于**< R?我找到了ACTION_FINGERPRINT_ENROLL**,但它已被弃用。 - Maulik Dodia
对于 API >= M,您需要使用 Settings.ACTION_SECURITY_SETTINGS,对于 API >= Settings.ACTION_FINGERPRINT_ENROLL,以及对于 API >= R,您需要使用 Settings.ACTION_BIOMETRIC_ENROLL - David Miguel

9

Android 9仅支持指纹生物识别技术。虹膜和面部识别技术将会在后续版本中支持。请注意,这导致先前的FingerprintManager API已经被弃用,当你在为Android P编写应用程序时,请使用新的BiometricPrompt API。

Android 9仅集成了指纹生物识别技术,其他生物识别方式的集成支持也将在未来推出。

来源


谢谢,不知怎么的,在我来这里之前看的链接中我错过了那个...有趣的是我比实际源文件的文档更关注SO...等等,这不是悲哀而不是有趣 :/ - greaterKing
是的,一年后有新的更新可用 :) ..在这里找到它:https://android-developers.googleblog.com/2019/10/one-biometric-api-over-all-android.html。 - CoDe
有没有办法使用AndroidX生物识别API中的人脸识别而不是指纹识别? - Harish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接