2015-09-28 140 views
0

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

当我在设备上运行它时,一切都运行良好,证书被存储并从钥匙链中读取。

该应用程序必须是MDM包装的,这就是问题出现的地方。 只要它被包裹,我就无法再读取或写入钥匙串。

我将其跟踪到一个SecItemCopyMatching调用,它检查该值是否已存储。在unwrapped的情况下,我得到了状态码-25300 = noItemFound,这很好,因为钥匙串在开始时是空的。

但是,如果包装箱中的参数完全相同,则返回码是-50,这是错误,告诉我我放入该方法的字典无效。

我试着打开/关闭参数或将它们留下,没有任何变化。总是-50错误代码。

您有没有人可能不得不在过去处理这类问题?我在这里真的没有什么想法了。

词典是这样的:

  • kSecAttrAccount = PasswordIdentifier
  • kSecAttrGeneric = PasswordIdentifier
  • kSecAttrSynchonizable = kSecAttrSynchronizableAny
  • kSecAttrService = “MyAppIdentifier”
  • kSecClass = kSecClassGenericPassword

就像我说过的,当我不包装它时,这些参数是完全正确的,并被接受。

回答

0

好吧,事实证明,这实际上是来自Citrix MDM的一个错误。包装时,SecItemCopyMatching 方法不起作用。它只是没有。作为解决方法,我们现在使用SecItemInsert并检查返回码是否为“duplicateItem”。