[英]iOS: Resigned app cannot access keychain through security API
我们正在为客户撰写应用程序。 我们编译应用程序并向客户提供IPA,然后客户使用其配置文件和密钥重新授予应用程序。
该应用程序正常工作,直到客户辞职。 然后在访问钥匙串时失败。 我们在设备控制台中收到消息,如下所示:
... SecItemAdd: missing entitlement
... SecItemCopyMatching: missing entitlement
记录我们收到的返回码-25308“所有SecItem *调用中都不允许与安全管理服务器进行交互”。
我找不到任何有同样问题和解决方案的人。
初始构建和后续代码签名都有效,应用程序一直运行,直到它尝试访问钥匙串。 在辞职时,客户指定了我们最初使用的相同应用ID。 我也添加了和权利文件。
我注意到客户使用的配置文件中使用的应用程序ID与应用程序中的ID不同。 然而,辞职的工作和应用程序运行所以我在这一点上假设它不是一个问题。
到目前为止没有运气。
有人有这个问题并解决了吗?
感谢@borrrden的回复。 他们给了我一些好的指示。
我最终把它全部搞定了。 这是我发现的。
通配符ids很好。 我使用外卡ID并访问钥匙串没有问题。
问题是XCode根据它在编译时知道的id动态创建一组权利。 发生重新签名时,配置文件包含一个应用程序ID,生成的权利不匹配。 因此iOS不允许访问。
为了解决这个问题,我创建了一个权利文件,我让客户端指定为codesign参数的一部分。 此权利包含与配置文件中的新应用程序ID匹配的密钥链访问组。 我还必须在访问组的前面添加正确的团队ID。 通常XCode会自动插入。
数据保护也与此问题无关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.