kSecUseAuthenticationUISkip 使用方法
Posted
技术标签:
【中文标题】kSecUseAuthenticationUISkip 使用方法【英文标题】:kSecUseAuthenticationUISkip how to use it 【发布时间】:2017-02-20 07:44:54 【问题描述】:我想通过以下访问控制向 secItemAdd 添加一个项目
SecAccessControlRef sacObject = SecAccessControlCreateWithFlags(kCFAllocatorDefault,
kSecAttrAccessibleAfterFirstUnlock,
/*kecAccessControlTouchIDAny | */kSecAccessControlApplicationPassword, &error);
所以它基本上要求密码将项目添加到钥匙串,这是完美的,但是当我想访问这个项目时,我想跳过 UI 身份验证,并且我想使用 kSecUseAuthenticationUISkip 手动提供密码。
【问题讨论】:
【参考方案1】:根据 Apple 关于 kSecUseAuthenticationUISkip
常量 (https://developer.apple.com/reference/security/ksecuseauthenticationuiskip?language=objc) 的文档
静默跳过任何需要用户身份验证的项目。仅将此值与
SecItemCopyMatching
函数一起使用。
所以不是选择性地跳过身份验证,而是跳过需要身份验证的项目
现在,当您想使用应用程序提供的密码来保护对钥匙串的访问时,在调用 SecItemAdd
时,您必须使用设置为 LAContext
类型为 LACredentialTypeApplicationPassword
的 kSecUseAuthenticationContext
密钥它包含您向用户询问的密码以及您传递给kSecAttrAccessControl
键的对象中的kSecAccessControlApplicationPassword
。
这是一篇文章,它通过一个示例对其进行了解释,我认为它非常适合您的用例:http://collinbstuart.github.io/lessons/2015/11/04/keychain_entropy
【讨论】:
提到的链接似乎已损坏。但是我发现了另一个写得很好的例子macbirdie.net/2016/03/app-pwd 这篇特别的文章似乎已经移到这里了:kolinsturt.github.io/lessons/2015/11/04/keychain-entropy以上是关于kSecUseAuthenticationUISkip 使用方法的主要内容,如果未能解决你的问题,请参考以下文章