我想在iOS Keychain中安全地存储用户凭证,但我只希望用户能够使用他们的指纹来检索Keychain项目。有没有一种工作流程可以调用Touch ID传感器来检索Keychain项目,并能够驳回密码解锁或完全不回落到密码?
我已经实现了WWDC会议上定义的关于Touch ID和Keychain的方法,但我不想像他们的演示那样回到设备密码。我想让用户在指纹扫描失败后以传统方式登录。
@岸川胜美 是对的,在iOS 8中,没有办法禁用密码回退。在iOS 8中,没有办法禁用密码回退。kSecAccessControlUserPresence
访问控制标志在Touch ID或Passcode认证成功后,就可以访问一个项目,甚至不需要Touch ID就可以使用。
不过这一点在iOS 9中已经得到了改进。两个Touch ID相关的标志。kSecAccessControlTouchIDAny
和 kSecAccessControlTouchIDCurrentSet
, 已添加.
所以,当你为Keychain项目创建访问控制对象时,你需要使用这两个标志中的任何一个(使用 SecAccessControlCreateWithFlags
函数),并将该对象分配给 kSecAttrAccessControl
属性时,添加带有 SecItemAdd
功能。
有 苹果的例子 证明了这一点;见 addTouchIDItemAsync
方法。另见 此职位 以了解 iOS 9 中其他安全相关更改的概述。
您可以使用以下功能自定义 "输入密码 "按钮 localizedFallbackTitle
财产
LAContext *myContext = [[LAContext alloc] init];
myContext.localizedFallbackTitle = @"sign in traditionally";
如果你想删除回退按钮,只需设置这样的属性即可。
myContext.localizedFallbackTitle = @"";
在Keychain TouchID集成中,没有办法禁用使用密码的回退机制。