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 类型为 LACredentialTypeApplicationPasswordkSecUseAuthenticationContext 密钥它包含您向用户询问的密码以及您传递给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 使用方法的主要内容,如果未能解决你的问题,请参考以下文章