在不存储用户生物特征的情况下使用 Touch ID 或 Face ID

Posted

技术标签:

【中文标题】在不存储用户生物特征的情况下使用 Touch ID 或 Face ID【英文标题】:Using Touch ID or Face ID without storing user biometrics 【发布时间】:2018-12-13 06:56:05 【问题描述】:

如果这个主题不适合 ***,我提前道歉(我要求版主在适当的地方移动它)。谢谢。

我想知道应用如何使用 Touch ID 或 Face ID 来验证身份,而不会将生物特征数据存储到其服务器中。

无需 Touch/Face ID 的身份验证(此处过于简单)

    用户登录他们的银行应用程序。 用户名和密码发送到服务器进行验证。 用户名和密码会根据银行服务器中存储的信息进行检查。 如果用户名和密码组合有效,则会颁发一个用于当前会话的令牌。

在用户允许应用使用他们的 Touch/Face ID 后...

使用 Touch/Face ID 进行身份验证

    用户登录他们的银行应用程序。 他们使用自己的 Touch/Face ID 进行验证

...这里发生了什么?什么被发送到服务器进行验证?

我了解到,生物特征数据存储在手机上的安全芯片中,并且没有存储在任何服务器上。

对于 ios,除了 Touch/Face ID 包外,我们还需要使用钥匙串访问。为什么?这里存储了什么?

谢谢。

【问题讨论】:

【参考方案1】:

典型的流程是:

首次登录:

用户使用用户名/密码进行身份验证 如果身份验证成功,系统会询问他们是否要使用 TouchID/FaceID 如果这样做,用户名和密码将存储在钥匙串中,并要求生物识别身份验证才能访问数据

在后续登录时:

应用尝试检索存储的用户名/密码以触发生物特征验证 应用使用存储的用户名和密码向服务器进行身份验证。

【讨论】:

这反映了我们经过多次测试并在生产中实现后的实际经验。干杯! 如果主要登录方法是电话/otp 而不是电子邮件/密码怎么办? otp 在几小时内到期。 然后您可以将生成的令牌存储在具有生物特征要求的钥匙串中,但这仅在令牌具有长期有效期时才实用。如果您无法保存持久会话令牌,那么您将需要用户每次都进行身份验证,并且生物特征身份验证不是有效的用例。【参考方案2】:

它与普通密码的工作方式非常相似,它只是第二道安全线。

例如,您的设备已登录到您的 Itunes 帐户,该帐户与您的银行帐户相关联。为了采取行动,一旦匹配(使用安全芯片),设备将要求以 Touch Id/Face Id 的形式进行身份验证,设备会将请求发送给苹果,苹果将其发送给银行。是的,它可能会被愚弄,因为它发生在客户端,但您仍然需要以某种方式登录您的 Itunes 帐户,因此这是第二道安全线。

为了清楚起见,您实际上并没有使用 Touch ID 或 Face ID 登录您使用设备记住的密码登录的帐户。为了获取它记住的密码,您需要 Touch ID 或 Face ID。

【讨论】:

这与您的 iTunes 帐户无关,请求不会发送给 Apple。您可以选择使用 iCloud 钥匙串,它会在您的设备上同步某些钥匙串条目,但这不是强制性的,在许多情况下,例如银行应用程序,它们会明确地将这些钥匙串条目从 iCloud 钥匙串中排除。 我在谈论一个案例,您的付款方式(信用卡)已连接到您的 iTunes 帐户,因为在问题中他举了一个银行示例,但它肯定不仅仅绑定到您的 iTunes 帐户。只是一个例子

以上是关于在不存储用户生物特征的情况下使用 Touch ID 或 Face ID的主要内容,如果未能解决你的问题,请参考以下文章

使用 Touch Id 在数据库中存储指纹 [关闭]

苹果复活Touch ID!全屏指纹体验秒杀安卓

人脸识别渗入生活

如何在不使用index.js文件中的触发器功能的情况下从Firestore数据库读取数据?

模拟器中没有 Touch ID / Face ID 提示

我们如何在不使用泛型类型进行自定义的情况下处理身份核心用户管理和用户存储的多个用户使用情况?