我正在向我的应用程序添加用户身份验证支持。唯一的要求是用户应该是设备的所有者(应用程序不访问远程服务,也不需要访问钥匙串中的密钥)。
我已经阅读LocalAuthentication
了框架文档并进行了实验。我知道首先调用API 以使用触摸/面部 id 对用户进行身份验证,如果失败则LocalAuthentication
回退到要求用户输入设备密码在技术上是可行的。
但是,在我使用过的所有 iOS 应用程序中,我从未见过像这样对用户进行身份验证的应用程序(我的意思是,使用设备密码)。当我在这些应用程序中启用触摸/面部身份验证时,他们都要求我首先设置一个较短且几乎从未使用过的应用程序特定密码,在我看来这不仅不方便而且不安全。我想知道他们为什么不只使用设备密码?Apple Store 中是否有不允许这样做的政策?我的应用会因为这样做而被拒绝吗?感谢您的任何解释。
更新:
根据这篇文章,使用 keychain 比使用更安全,LocalAuthentication
因为前者是系统级组件,后者是应用层组件。但是,文章建议在访问钥匙串中的项目时使用设备密码,而不是特定于应用程序的密码。
开发人员在钥匙串上设置访问控制至关重要,这样当用户尝试检索安全项目时,他们必须使用设备密码进行身份验证(因此,启用时需要面容 ID)。