未设置访问组时共享的钥匙串项目

Posted

技术标签:

【中文标题】未设置访问组时共享的钥匙串项目【英文标题】:Keychain item shared when access group is not set 【发布时间】:2018-12-10 08:23:34 【问题描述】:

我有两个应用程序使用相同的架构来存储受生物特征认证保护的 kSecClassGenericPassword 项。

在应用程序初始化后,我无法从一个应用程序中检索钥匙串项的内容 (errSecInteractionNotAllowed = -25308),而其他应用程序一切正常。

即使没有设置钥匙串访问组,钥匙串项也会在两个应用程序之间共享。

我在这个文件夹中放了一个示例应用和一个视频:https://www.dropbox.com/sh/lk5p1war4c4tids/AACbE-E-z7Pqjx9XHD92RJ6Sa?dl=0

复制步骤(以附件形式查看视频):

使用提供的 Keychain-Access 项目

设置包标识符:App1 -> ch.sysmosoft.debug.Keychain-Access.1

启动 App1

关闭 App1

启动 App1

认证

显示受保护的元素

更改包标识符:App2 -> ch.sysmosoft.debug.Keychain-Access.2

启动 App2

关闭 App2

启动 App2

显示受保护的元素

启动 App1

受保护的元素不可访问 (errSecInteractionNotAllowed)

版本/构建:

Xcode -> 版本 10.1 (10B61)

ios -> 12.1 (16B92)

iPhone 6s(型号 MKQN2ZD/A)

iPad mini(型号 ME276GP/A)

其他信息:

即使 TeamId 不同,也会出现此错误。

我使用此页面中的钥匙串项目唯一标识符What makes a keychain item unique (in iOS)?

感谢您的帮助

【问题讨论】:

【参考方案1】:

我们找到了错误的根源。

要解决受生物认证保护的钥匙串项的问题,您必须有一个不同的PRODUCT_NAME

【讨论】:

以上是关于未设置访问组时共享的钥匙串项目的主要内容,如果未能解决你的问题,请参考以下文章

NSInternalInconsistencyException:无法更新钥匙串项

将钥匙串共享添加到已有用户的生产应用程序

钥匙串代码签名权利 - 奇怪的行为,钥匙串丢失

苹果密码钥匙串在哪里

Mac钥匙串有啥用?钥匙串访问是啥

xcode 9 xcodebuild 开启钥匙串共享和推送通知