kSecUseAuthenticationUISkip如何使用它

时间:2017-02-20 07:44:55

标签: ios security keychain

我想使用以下访问控制

向secItemAdd添加项目
SecAccessControlRef sacObject = SecAccessControlCreateWithFlags(kCFAllocatorDefault,
                                                             kSecAttrAccessibleAfterFirstUnlock,
                                                             /*kecAccessControlTouchIDAny | */kSecAccessControlApplicationPassword, &error);

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

1 个答案:

答案 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