Objective c MDM与密钥链访问冲突

Objective c MDM与密钥链访问冲突,objective-c,keychain,mdm,Objective C,Keychain,Mdm,我正在开发一个应用程序,它使用密钥链来存储登录凭据。 为了访问钥匙链,我使用UICKeyChainStore库来简化它 当我在设备上运行它时,一切都正常工作,凭证被存储并从钥匙链读取 应用程序必须进行MDM包装,这就是问题的根源。 一旦包装好,我就再也不能读写钥匙链了 我跟踪到一个SecItemCopyMatching调用,该调用检查值是否已经存储。在unwrapped的情况下,我得到了状态代码-25300=noItemFound,这很好,因为钥匙链在开始时是空的 但是,在包装的case中使用完

我正在开发一个应用程序,它使用密钥链来存储登录凭据。 为了访问钥匙链,我使用UICKeyChainStore库来简化它

当我在设备上运行它时,一切都正常工作,凭证被存储并从钥匙链读取

应用程序必须进行MDM包装,这就是问题的根源。 一旦包装好,我就再也不能读写钥匙链了

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

但是,在包装的case中使用完全相同的参数时,返回代码是-50,这是errSecParam错误,告诉我放入方法中的字典无效

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

你们中有没有人曾经处理过这种问题?我真的没什么主意了

字典如下所示:

kSecAttrAccount=密码标识符 kSecAttrGeneric=密码标识符 ksecattrsynchronizable=ksecattrsynchronizableny kSecAttrService=MyAppIdentifier kSecClass=kSecClassGenericPassword
就像我说的,当我不包装它时,这些参数是完全可以接受的

好的,原来这实际上是Citrix MDM的一个bug。包装时,方法SecItemCopyMatching不起作用。事实并非如此。作为解决方法,我们现在使用SecItemInsert并检查返回代码是否为duplicateItem