繁体   English   中英

iOS:已退出的应用无法通过安全API访问钥匙串

[英]iOS: Resigned app cannot access keychain through security API

我们正在为客户撰写应用程序。 我们编译应用程序并向客户提供IPA,然后客户使用其配置文件和密钥重新授予应用程序。

该应用程序正常工作,直到客户辞职。 然后在访问钥匙串时失败。 我们在设备控制台中收到消息,如下所示:

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

记录我们收到的返回码-25308“所有SecItem *调用中都不允许与安全管理服务器进行交互”。

我找不到任何有同样问题和解决方案的人。

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

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

到目前为止没有运气。

有人有这个问题并解决了吗?

感谢@borrrden的回复。 他们给了我一些好的指示。

我最终把它全部搞定了。 这是我发现的。

  1. 通配符ids很好。 我使用外卡ID并访问钥匙串没有问题。

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

  3. 为了解决这个问题,我创建了一个权利文件,我让客户端指定为codesign参数的一部分。 此权利包含与配置文件中的新应用程序ID匹配的密钥链访问组。 我还必须在访问组的前面添加正确的团队ID。 通常XCode会自动插入。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM