3

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

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

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

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

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

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

4

1 回答 1

2

现在可以在 iOS 9 上使用:

  • kSecAccessControlTouchIDCurrentSet- “当前注册手指集合中的 Touch ID。Touch ID 必须可用,并且必须至少注册一个手指。添加或移除手指时,该项目无效。”
  • kSecAccessControlTouchIDAny- “Touch ID(任何手指)。Touch ID 必须可用,并且必须至少注册一根手指。即使添加或移除手指,仍可通过 Touch ID 访问项目”。
于 2016-01-13T09:15:52.630 回答