Как ACL связки ключей MacOS определяет, какие приложения имеют доступ? - PullRequest
0 голосов
/ 08 октября 2019

Когда приложение сохраняет элемент в цепочке для ключей, macOS добавляет это приложение в список контроля доступа, чтобы ваше приложение могло получить к нему доступ позже. Если вы попытаетесь получить доступ к этому элементу из другого приложения, macOS отобразит системное приглашение, спрашивающее пользователя, хотят ли они разрешить доступ. Это задокументировано здесь .

Имя приложения хочет использовать вашу конфиденциальную информацию, хранящуюся в "com.company.appname.key" в вашей цепочке для ключей. Чтобы разрешить это, введите пароль цепочки для ключей входа в систему.

System Prompt Как macOS узнает, какие приложения имеют доступ? Это по идентификатору пакета, подписи сертификатов, расположению приложения на диске или как-то еще?

В нашем приложении мы неожиданно видим это приглашение, когда пытаемся получить доступ к записи, о которой известно только наше приложение, созданное таким образом. Я пытаюсь понять, почему macOS считает, что это другое приложение. Когда я просматриваю элемент в Keychain Access, он отображает имя нашего приложения, указанное в элементе управления доступом в разделе «Всегда разрешать доступ этим приложениям», но значок является общим файлом, и я уверен, что новая версия приложения не совпадаетприложение. Обратите внимание, что у меня больше не установлена ​​старая версия.

1 Ответ

0 голосов
/ 08 октября 2019

Вы можете посмотреть документацию для подписи кода .

В частности, раздел «Доставка и обновление вашего продукта», в котором говорится следующее (выделено мной):

Когда вы квалифицировали новую версию своего продукта, подпишите ее так же, как вы подписали предыдущую версию, с тем же идентификатором и тем же обозначенным требованием. Система пользователя считает новую версию вашего продукта той же самой программой, что и предыдущая версия. Например, Keychain Services не различает старые и новые версии вашей программы, если обе подписаны, а уникальный идентификатор остается постоянным t.

...