ios - 通过 kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly 进行不带 FaceID 的 SecItemCopyMatching

标签 ios face-id

我正在尝试通过 FaceID 解锁钥匙串(keychain)/安全区域中的数据,并使其在用户 session 期间可访问(无需额外解锁)。

Per the documentation for kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly :

After the first unlock, the data remains accessible until the next restart. This is recommended for items that need to be accessed by background applications. Items with this attribute do not migrate to a new device.

但是,每当我调用 SecItemCopyMatching() ( documentation ) 时,系统总是提示我执行 FaceID 授权。

谁能解释一下我可能做错了什么(或误解)?

最佳答案

分配给钥匙串(keychain)项目的数据保护等级和访问控制标志是分开的。

在您的问题中,您详细说明了您分配的数据保护类别,但您描述的行为是由指定的访问控制标志引起的。

数据保护等级是指设备的锁定状态,而不是钥匙串(keychain)项

如果指定一个或多个 of these values然后每次访问钥匙串(keychain)项目时都需要指定的身份验证(生物识别和/或密码)。

如果您只希望用户在第一次访问该项目时验证他们的存在,那么您可以为该项目指定无访问控制并直接使用本地身份验证框架。一旦用户成功通过身份验证,就设置一个标志,并且在该 session 中不再提示他们(或者直到特定时间未过去或您喜欢的任何逻辑)。

关于ios - 通过 kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly 进行不带 FaceID 的 SecItemCopyMatching,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51468573/

相关文章:

ios - 如何发布依赖于关系的自定义核心数据属性的通知?

ios - 使用 SLComposeViewController 在 Twitter 上发布动画 gif

ios - 如何使用 Objective-C 将字节数组转换为短数组?

ios - 在预定的 CGPoints 之间随机选择?

ios - 允许 Face ID 权限提醒

iOS - 面容 ID 生物识别集成

ios - 模拟器不支持LAContext评估访问控制吗?

objective-c - 如何/是否模拟 UINavigationController pushToViewController 方法

ios - 什么是 NSFaceIDUsageDescription - Face ID Usage Description Info.plist key ?

ios - 未更新面容 ID 消息