Отображение запроса пароля только один раз - как? - PullRequest
2 голосов
/ 20 октября 2010

Я создаю приложение Какао, которое изменяет файл в операционной системе пользователя, который требует разрешения администратора.У меня есть доказательство работоспособности концепции, которая использует authopen, но она не обеспечивает UX-опыта, которого я надеюсь достичь.Каждый раз, когда файл изменяется, он предлагает пользователю ввести свой пароль.Есть ли способ получить разрешения, предоставляемые приложению на время его жизни?

Цель: Приложение запрашивает пароль у пользователя один раз когда-либо .не запрашивать пароль.

След. Лучший: Приложение запрашивает пароль у пользователя один раз при запуске приложения , приложение не запрашивает пароль до перезапуска приложения.

Мне известны службы авторизации и возможность создания демона, который конкретно занимается модификацией привилегированных файлов, и мне интересно, если одна из моих перечисленных целей даже возможна перед погружениемслишком глубоко в другую систему.

Действительно ценю любые предложения, критические замечания или полезные ссылки.

Приветствия, Дастин

1 Ответ

2 голосов
/ 20 октября 2010

Да, использование служб авторизации - это путь вперед. Вы получаете AuthorizationRef в своем приложении через AuthorizationCopyRights () (который показывает пользовательский интерфейс при необходимости), и передаете его своему помощнику (упаковывая его во внешнюю форму), который проверяет, что он действительно получил необходимое право перед выполнением привилегированной задачи. , Службы авторизации могут регистрировать права в базе данных /etc/authorization, поэтому, если вы выбираете пользовательское право, вы можете выбрать настройки по умолчанию для тех, кому разрешено его приобретать, какое время ожидания или другие условия существуют и т. Д.

Чтобы развернуть свой привилегированный вспомогательный инструмент, вы должны использовать инфраструктуру управления службами, в частности SMJobBless(), которая проверяет, совпадают ли идентификаторы подписи кода на вашем клиенте и помощнике, прежде чем развертывать помощник в качестве задания launchd. Тогда ваш помощник может быть вызван по требованию основным приложением.

Не стесняйтесь спрашивать, хотите ли вы разъяснить какой-либо шаг в ответе, однако я уже писал об обоих этих аспектах разделения привилегий в моей книге Профессиональная защита приложений какао , поэтому не стесняйтесь покупать копию или два; -).

...