1

我正在向我的应用程序添加用户身份验证支持。唯一的要求是用户应该是设备的所有者(应用程序不访问远程服务,也不需要访问钥匙串中的密钥)。

我已经阅读LocalAuthentication了框架文档并进行了实验。我知道首先调用API 以使用触摸/面部 id 对用户进行身份验证,如果失败则LocalAuthentication回退到要求用户输入设备密码在技术上是可行的。

但是,在我使用过的所有 iOS 应用程序中,我从未见过像这样对用户进行身份验证的应用程序(我的意思是,使用设备密码)。当我在这些应用程序中启用触摸/面部身份验证时,他们都要求我首先设置一个较短且几乎从未使用过的应用程序特定密码,在我看来这不仅不方便而且不安全。我想知道他们为什么不只使用设备密码?Apple Store 中是否有不允许这样做的政策?我的应用会因为这样做而被拒绝吗?感谢您的任何解释。

更新

根据这篇文章,使用 keychain 比使用更安全,LocalAuthentication因为前者是系统级组件,后者是应用层组件。但是,文章建议在访问钥匙串中的项目时使用设备密码,而不是特定于应用程序的密码。

开发人员在钥匙串上设置访问控制至关重要,这样当用户尝试检索安全项目时,他们必须使用设备密码进行身份验证(因此,启用时需要面容 ID)。

4

1 回答 1

1

现在我已经在 App Store 中发布了自己的应用程序,我想我可以对我的问题给出一个明确的答案。我实际上问了两个问题:

  1. 可以使用设备密码对 iOS 应用程序的用户进行身份验证吗?

答:是的。我在我的应用程序中执行了此操作,并且该应用程序被 App Store 接受。

  1. 为什么大多数(如果不是全部)应用程序都会引入应用程序特定密码?

答:我对此不是 100% 确定的。我认为某些应用程序这样做是因为它们将用户凭据保存在钥匙串中,并希望使用特定于应用程序的密钥代码来保护这些数据。然而,对于其他应用程序,我怀疑他们不会使用特定于应用程序的代码来做任何事情。

于 2020-07-02T09:46:09.530 回答