钥匙串的触摸 ID 没有 PIN 回退



我正在努力为我的应用程序集成触摸ID,以便用户登录。 由于我将存储将来通过触摸使用的用户名和密码,因此我发现localAuthenticate对我不起作用,我必须使用新的ACL来访问钥匙串。

我得到了所有代码来读取/写入带有ACL的钥匙串。 但我现在只看到一个选项"kSecAccessControlUserPresence",用于SecAccessControlCreateWithFlags(...(。 这允许每个Apple文档的用户在不想使用Touch ID时回退到PIN码。 无论如何,是否只允许使用触摸ID访问这些键, 如果失败,那么用户必须手动输入凭据?

我还有其他选择,但我试图避免它们:

  • 选项 A:使用 LocalAuthenticate,我将在用户中对我的凭据进行加密,但我必须弄清楚将密钥存储在哪里? 有什么想法吗?

  • 选项 B:继续使用 ACL 和钥匙链,但我必须弄清楚用户是否使用了 PIN 码或触摸 ID。 如果他们使用触摸ID,那么我将继续使用我从钥匙串获得的信息登录,如果他们使用pin,我会再次询问他们LocalAuthenticate。 如果他们取消了它,那么我将不会登录, 如果他们使用Touch ID进行验证,那么我将使用钥匙串中的凭据登录。

更新:以防万一有人问我为什么不想要 PIN,我们的律师不接受 4 位 PIN 码的概念作为访问我们存储密码的钥匙链的方式。

这现在可以在 iOS 9 上使用:

  • kSecAccessControlTouchIDCurrentSet -"当前注册的手指集中的触摸 ID。触控 ID 必须可用,并且必须至少注册一根手指。添加或删除手指时,该项目将失效。
  • kSecAccessControlTouchIDAny - "触摸 ID(任何手指(。触控 ID 必须可用,并且必须至少注册一根手指。即使添加或删除手指,仍可通过Touch ID访问项目"。

最新更新