Доступ к паролю для связки ключей приложения (с подсказкой) - PullRequest
0 голосов
/ 26 сентября 2018

Я хотел бы получить доступ к паролю приложения цепочки для ключей (kSecClassGenericPassword) другого приложения (другого поставщика, не может делиться в группе) из моего изолированного приложения macOS.

Способ, которым яПредполагается, что это даст пользователю кнопку «Повторно использовать пароль от VendorApp».Затем запустите SecItemCopyMatching() для службы / учетной записи.Затем я ожидал бы, что сама система цепочки для ключей выведет диалоговое окно, предлагающее пользователю разрешить или запретить операцию.

Теперь это почти работает, SecItemCopyMatching возвращает результат с некоторыми метаданными.Но он не возвращает фактические данные и не запрашивает пользователя.

Итак, вопрос: как я могу заставить Keychain Services запросить у пользователя разрешение на передачу данных моему приложению?kSecUseAuthenticationUI вроде предполагает, что это должно быть возможно.

Вот то, что я пытаюсь:

let query : [ String : Any ] = [
  kSecClass               as String: kSecClassGenericPassword,
  kSecAttrAccount         as String: account,
  kSecAttrService         as String: service,
  kSecReturnAttributes    as String: true,
  kSecMatchLimit          as String: kSecMatchLimitOne,
  kSecUseAuthenticationUI as String: kSecUseAuthenticationUIAllow,
  kSecUseOperationPrompt  as String: "Login Using VendorApp"
]

var item   : CFTypeRef?
let status = SecItemCopyMatching(query as CFDictionary, &item)
  // status gives errSecSuccess and we do get some proper item fields

// always empty, obviously, it would need to prompt the user for permission
let data = item?[kSecValueData as String] as? Data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...