开发:不能,一堆兼容问题。
产品:咱们 Android 端能做指纹验证吗?
开发:不能,一堆兼容问题。
产品:咱们 Android 端能做指纹验证吗?
开发:我……我试试吧……
着手调研,开发前肯定先拿市面上竞品的功能来瞧瞧。我们同比了支付宝、微信支付和招商App。
产品:怎么支付宝和微信就没兼容问题了?
开发:那是因为支付宝和腾迅有自己的协议!(一听怎么XXX支持,怎么XXX没问题,升起无名火)这个标准直接和设备厂商合作,而应用方只有微信和支付宝自己。支付宝指纹支付标准是 IFAA ,腾讯的指纹支付标准是 SOTER,也就是说没有其他应用方会使用这个标准。所以很看应用方和设备厂商的协商程度。现在 IFAA 没有开源,只有 SOTER 是开源的了,如果接入,我们能省去兼容性测试的工作量,而且有些 6.0 以下的机型 SOTER 也支持。还有!(星星眼)每个指纹将会有唯一 ID,也就是说,我们能把账号和指纹绑定起来,更加安全。
产品:不行不行!这 SOTER 压根没支持华为,华为用户是我们的主要用户群,而且以后机型的扩展受第三方支持的限制。
开发:之前小米和华为就没有支持 SOTER 标准,现在小米是支持了,华为不见得会支持,因为 SOTER 和厂商合作,出厂的时候就将私钥存储在 TEE 中,华为目前多 TEE 系统开发尚未成熟,只能支持一个 TEE ,显然华为不愿意将唯一的 TEE 交给腾讯掌控。其他手机厂商一般使用高通或第三方的 TEE 系统方案,这些系统目前都支持多 TEE 运行环境,即使将其中一个 TEE 的公共密钥交给腾讯运营,并不影响手机厂商运营自己的 TEE 平台。
产品:不接入了,我们用 Google API。
开发:那好,来制定下条件先:
- 设备硬件不支持直接没得玩
- 手机要有除了指纹外的安全认证方式(比如密码、图案) ,这是安卓系统的双重锁规则。
- 用户手机至少录入了一个指纹,没录入指纹说明平时没有用过指纹验证功能,这种用户我们就不管了。
- 使用 Google API,不管什么情况,只要验证的指纹是系统指纹列表里存在的,就验证通过,Google API 是没有提供指纹唯一ID的,所以想要根据本机上的指纹索引来区别不同手指无法做到,也就无法实现指纹和账号绑定。
- 仅支持 Android 6.0 以上系统,Google 官方支持指纹识别的标准接口是在 Android6.0 开始的,如果厂商在这之前就已经做了指纹识别,那我们就不管了。(开发者也可以使用厂商提供的第三方指纹识别SDK)
产品:(点头)可以,开干吧!用 Google API 兼容性问题处理和测试量较大,所以我们支持的机型做成可配置,控制风险。第一期先支持几个机型。
- Google官方Sample
- SOTER 介绍
SOTER 支持机型
SOTER SDK地址- 阿里指纹
- IFAA暂无开源
2018.12.10 更新
SOTER 已支持部分华为机型 SOTER 支持机型 wiki
架构
好了,demo 写完了,看下了产品文档。啥?场景这么复杂?!分支繁多,还需要结合到之前存在的手势验证功能(