ios - kSecUseAuthenticationUISkip 如何使用

标签 ios security keychain

我想使用以下访问控制向 secItemAdd 添加一个项目

SecAccessControlRef sacObject = SecAccessControlCreateWithFlags(kCFAllocatorDefault,
                                                             kSecAttrAccessibleAfterFirstUnlock,
                                                             /*kecAccessControlTouchIDAny | */kSecAccessControlApplicationPassword, &error);

所以它基本上要求密码以将项目添加到钥匙串(keychain),这很完美,但是当我想访问这个项目时,我想跳过 UI 身份验证,所以我想如何使用 kSecUseAuthenticationUISkip 手动提供密码。

最佳答案

根据 Apple 关于 kSecUseAuthenticationUISkip 常量 ( https://developer.apple.com/reference/security/ksecuseauthenticationuiskip?language=objc ) 的文档

Silently skip any items that require user authentication. Only use this value with the SecItemCopyMatching function.

所以不是选择性跳过认证,而是跳过需要认证的项目

现在对于您的情况,当您想要使用应用提供的密码来保护对钥匙串(keychain)的访问时,在调用 SecItemAdd 时,您必须使用 kSecUseAuthenticationContext 键设置为类型为 LACredentialTypeApplicationPasswordLAContext 实例,它包含您向用户询问的密码以及您传递给 的对象中的 kSecAccessControlApplicationPassword >kSecAttrAccessControl 键。

这是一篇文章,它通过一个示例对其进行了解释,我认为它非常适合您的用例:http://collinbstuart.github.io/lessons/2015/11/04/keychain_entropy

关于ios - kSecUseAuthenticationUISkip 如何使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42339000/

相关文章:

iphone - 使用 Exchange ActiveSync 将 iPhone 上的应用程序列入黑名单或白名单

ios - 无论如何将 NSString 设置为指向另一个字符串的指针?

ios - 重复调用 "GPUImagePicture ProcessImage"内存警告导致App崩溃

security - 为什么自动脚本首选公用 key 身份验证?

android - 在具有相同凭据的两个 Android 应用程序之间共享登录数据

ios - 通过 KeyChain 保存和检索值

ios - UISearchBar 未设置为 UITableView.tableHeaderView

java - 身份验证真的需要 JAAS 吗?

ios - iOS如何实现客户端证书和服务器认证

ios:将新密码添加到 iCloud 钥匙串(keychain)