我想使用以下访问控制
向secItemAdd添加项目SecAccessControlRef sacObject = SecAccessControlCreateWithFlags(kCFAllocatorDefault,
kSecAttrAccessibleAfterFirstUnlock,
/*kecAccessControlTouchIDAny | */kSecAccessControlApplicationPassword, &error);
所以它基本上要求密码将项目添加到钥匙串,这是完美的,但是当我想要访问此项目时,我想跳过UI身份验证,并且我想知道如何使用kSecUseAuthenticationUISkip手动提供密码。
答案 0 :(得分:2)
根据Apple关于kSecUseAuthenticationUISkip
常量(https://developer.apple.com/reference/security/ksecuseauthenticationuiskip?language=objc)
默认跳过任何需要用户身份验证的项目。仅将此值与
SecItemCopyMatching
函数一起使用。
所以它不是选择性地跳过身份验证,而是跳过需要身份验证的项目
现在针对您希望使用应用提供的密码保护对钥匙串的访问权限的情况,在致电SecItemAdd
时,您必须使用kSecUseAuthenticationContext
密钥设置为{{1类型LAContext
的实例,其中包含您从用户那里请求的密码以及传递给LACredentialTypeApplicationPassword
密钥的对象中的kSecAccessControlApplicationPassword
。
这是一篇文章,它用一个例子来解释它,我认为它非常适合您的用例:http://collinbstuart.github.io/lessons/2015/11/04/keychain_entropy