MDM 与钥匙串访问冲突

MDM conflicts with Keychain-Access

我正在开发一个使用钥匙串来存储登录凭据的应用程序。 要访问钥匙串,我正在使用 UICKeyChainStore-library 以使其更容易。

当我运行它在设备上时,一切正常,凭据已存储并从钥匙串中读取。

应用程序必须是 MDM 包装的,这就是问题开始的地方。 一旦它被包裹起来,我就再也无法读取或写入 from/to 钥匙串了。

我追踪到 SecItemCopyMatching 调用,它检查该值是否已存储。在未包装的情况下,我得到状态代码 -25300 = noItemFound,这很好,因为钥匙串在开始时是空的。

但是在包裹的情况下使用完全相同的参数 return-code 是 -50 这是 errSecParam 错误,告诉我我放入的字典该方法无效。

我尝试打开/关闭参数或将其保留,但没有任何变化。总是 -50 错误代码。

你们中有人过去可能不得不处理过此类问题吗?我真的 运行 没主意了。

字典看起来像这样:

就像我说的,当我不包装它时,这些参数是完全可以接受的。

好的,事实证明这实际上是 Citrix MDM 的错误。包装后,方法 SecItemCopyMatching 不起作用 。它只是没有。作为解决方法,我们现在使用 SecItemInsert 并检查 return 代码是否为 "duplicateItem".