我有两个使用相同架构的应用程序来存储受生物特征认证保护的kSecClassGenericPassword项。
在应用程序初始化之后,当对其他应用程序都有利时,我无法从一个应用程序(errSecInteractionNotAllowed = -25308)检索钥匙串项的内容。
行为是因为即使未设置钥匙串访问组,钥匙串项仍在两个应用程序之间共享。
我在此文件夹中放置了一个示例应用程序和一个视频:https://www.dropbox.com/sh/lk5p1war4c4tids/AACbE-E-z7Pqjx9XHD92RJ6Sa?dl=0
复制步骤(请参见视频附件):
使用提供的钥匙串访问项目
设置捆绑包标识符: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)?上的钥匙串物品唯一标识符
感谢您的帮助
答案 0 :(得分:0)
我们找到了错误的根源。
要解决受生物特征认证保护的钥匙串项目的问题,您必须具有不同 PRODUCT_NAME
。