我有两个应用程序使用相同的模式来存储受生物认证保护的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)?

谢谢你的帮助