iOS:已辞职的应用程序无法通过安全 API 访问钥匙串(keychain)

标签 ios code-signing keychain

我们有一个正在为客户编写的应用程序。我们编译应用程序并将 IPA 交付给客户,然后客户使用他们的配置文件和 key 退出应用程序。

在客户退出之前,该应用程序运行良好。然后在访问钥匙串(keychain)时失败。我们在设备控制台中收到这样的消息:

... SecItemAdd: missing entitlement
... SecItemCopyMatching: missing entitlement

记录返回代码,我们从所有 SecItem* 调用中得到 -25308“不允许与安全服务器交互”。

我没能找到有同样问题和解决方案的人。

初始构建和后续代码签名都有效,应用程序一直运行,直到它尝试访问钥匙串(keychain)。辞职时,客户指定的应用程序 ID 与我们最初构建它时使用的应用程序 ID 相同。我也添加了权利文件。

我注意到客户使用的配置文件中使用的应用 ID 与应用中的 ID 不同。然而,辞职工作和应用程序运行,所以我假设在这一点上这不是问题。

到目前为止还没有运气。

有没有人遇到过这个问题并解决了?

最佳答案

感谢@borrrden 的回复。他们给了我一些很好的建议。

我最终得到了所有的工作。这是我发现的。

  1. 通配符 id 没问题。我在使用通配符 ID 和访问钥匙串(keychain)时没有遇到任何问题。

  2. 问题是 XCode 根据它在编译时知道的 ID 动态创建了一组权利。当发生辞职时,供应配置文件包含一个应用程序 ID,生成的权利不匹配。因此 iOS 不允许访问。

  3. 为了解决这个问题,我创建了一个授权文件,让客户将其指定为协同设计参数的一部分。此权利包含一个 key 链访问组,该组与配置文件中的新应用程序 ID 相匹配。我还必须将正确的团队 ID 添加到访问组的前面。通常 XCode 会自动插入它。

  4. 数据保护也与该问题无关。

关于iOS:已辞职的应用程序无法通过安全 API 访问钥匙串(keychain),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18201823/

相关文章:

ios - FBSDKShareDialog 在视频共享的情况下不出现

ssl - 从 Symantec 代码签名证书创建 pfx 文件

iphone - 我可以上传新版本的 iOS 应用程序,其证书/配置文件与之前的版本不同吗?

ios - 将 iOS 应用程序的钥匙串(keychain)转移到新机器

具有标准 API 的 Android 安全持久存储(应用程序卸载)

cocoa - 如何以编程方式允许访问我的应用程序的钥匙串(keychain)?

ios - 使用 IAM 用户凭证 iOS 的 AWS iOT 登录问题

iOS - 在运行时获取使用 Interface Builder 创建的 UIView 框架

ios - 限制特定尺寸类别的方向

ios - 在 Xcode 6 中使用 iOS 8 Extension 归档应用程序时发出警告