未设置访问组时共享钥匙串项目
Keychain item shared when access group is not set
我有两个应用程序使用相同的架构来存储受生物识别身份验证保护的 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)
Version/Build:
Xcode -> 版本 10.1 (10B61)
iOS -> 12.1 (16B92)
iPhone 6s(型号MKQN2ZD/A)
iPad迷你(型号ME276GP/A)
其他信息:
即使 TeamId 不同也会出现此错误。
我使用此页面中的钥匙串项目唯一标识符 What makes a keychain item unique (in iOS)?
感谢您的帮助
我们找到了错误的来源。
要解决受生物认证保护的钥匙串项的问题,您必须有一个不同的 PRODUCT_NAME
.
我有两个应用程序使用相同的架构来存储受生物识别身份验证保护的 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)
Version/Build:
Xcode -> 版本 10.1 (10B61)
iOS -> 12.1 (16B92)
iPhone 6s(型号MKQN2ZD/A)
iPad迷你(型号ME276GP/A)
其他信息:
即使 TeamId 不同也会出现此错误。
我使用此页面中的钥匙串项目唯一标识符 What makes a keychain item unique (in iOS)?
感谢您的帮助
我们找到了错误的来源。
要解决受生物认证保护的钥匙串项的问题,您必须有一个不同的 PRODUCT_NAME
.