【问题标题】:Key Chain Data loss when app distribute through MDM应用程序通过 MDM 分发时的 Key Chain 数据丢失
【发布时间】:2020-01-10 06:06:22
【问题描述】:

在我们的 iPad 应用程序中,用户必须输入他的详细信息进行注册。在用户输入他的详细信息后,我们将这些详细信息保存在设备的钥匙串中。

因此,下次用户启动应用程序时,用户无需再次注册即可使用该应用程序。由于我们将其保存在钥匙串中,因此即使通过删除重新安装应用程序也可以正常工作。

我们的一位客户使用他们的 MaaS360 MDM 将此应用分发给他们的用户。但是当用户通过 MDM 应用程序安装它时,第二天之后,钥匙串数据丢失并要求用户重新进行设备注册。

最初,我们认为这是由于他们包含的一项政策。但没有运气。谁能告诉我这里发生了什么以及如何解决这个问题。

【问题讨论】:

  • 它可能取决于 MDM 服务器和/或配置文件的配置。 MDM 服务器可以在设备选择加入期间清理托管应用数据,或者每次都重新安装托管应用。
  • @Asperi 您能否提供更多详细信息,例如我们如何停止此 MDM 服务器清理策略?
  • @GBD 你的应用程序支持的最低版本是 IOS 8.0 吗?
  • 您确定捆绑 ID 没有被 MaaS360 更改,即使在设备上安装之后也是如此?也许您的数据仍然存在于设备上,但由于捆绑 ID 已更改,钥匙串无法找到它。
  • 我们遇到了类似的问题,奇怪的是存储在应用程序沙箱中的数据在更新后会保留,但钥匙串值不会。在我们的例子中,它的 sqlite db 使用钥匙串中的密码加密。 db 文件存在,但钥匙串中缺少密码。

标签: ios objective-c keychain mdm ios12


【解决方案1】:

有两种可能的情况:

第一个场景:

这是MaaS360 MDM服务器的配置问题。请看这些config examples

第二种情况:

这不是 MaaS360 MDM 问题,而是 certificate 问题。您的客户在分发应用程序时可能会遇到类似的错误:

"Could not find a valid private-key/certificate pair for this profile in your keychain."

Apple 文档says 对此进行了以下说明:

此错误消息表明您系统的钥匙串缺少您用于签署应用程序的证书的公钥或私钥。当您尝试从与最初用于请求代码签名证书的系统不同的系统签名和构建应用程序时,通常会发生这种情况。如果您的证书已过期或已被吊销,也可能发生这种情况。确保您的应用的配置文件包含有效的代码签名证书,并且您系统的钥匙串包含该证书、最初用于生成该证书的私钥以及 WWDR 中间证书。

请阅读Code Signing instructions 了解如何解决该问题

【讨论】:

  • 不,我们在这两种情况下都没有问题。实际上,他们可以将分布式 ipa 安装到托管设备中,但几天后,他们会遇到密钥链数据丢失,而不是在安装时。
  • 好的,我知道了。我会试着找出原因。
最近更新 更多