2015-09-28 120 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」。