objective-c - Touch ID for KeyChain 无 PIN 回退

标签 objective-c swift ios8 keychain touch-id

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

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

我有其他选择,但我正在努力避免:

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

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

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

最佳答案

现在可以在 iOS 9 上使用:

  • kSecAccessControlTouchIDCurrentSet - “来自当前已注册手指组的触摸 ID。触摸 ID 必须可用并且必须至少注册一个手指。添加或删除手指时,该项目将失效。”
  • kSecAccessControlTouchIDAny - “Touch ID(任何手指)。Touch ID 必须可用并且必须至少注册一个手指。即使添加或移除手指,Touch ID 仍可访问项目”。

关于objective-c - Touch ID for KeyChain 无 PIN 回退,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27551134/

相关文章:

ios - AFNetworking 3.0 后台上传不工作

Swift 没有在 return 语句中设置值

swift - 用 Swift 编写的 iOS 8 框架

ios - 如何让多个元素能够受到 View Controller 的影响

ios - 无法在 NSUserDefaults 中保存数据,并因 Signal SIGABRT 崩溃

ios - Cocos2d : Move CCsprite According to Touch

ios - AFNetworking、UITableView 和 block

ios - 具有序列顺序的 Coredata 获取请求

ios - 如何更改导航栏标题的颜色?

xcode - 使用 Storyboard不同的布局 xcode - socket 不工作