Настройка экрана входа в Mac OSX (SFAuthorizationPluginView)

Я пытаюсь расширить экран входа в MacOSX 10.9.1 (Mavericks). Как я выяснил, это возможно путем реализации нового плагина аутентификации и его установки в базу данных авторизации.

Я скачал пример NameAndPassword, который показывает, как реализовать интерфейс и перезаписать / расширить SFAuthorizationPluginView. Но проблема в том, что я не могу построить его под Маверикс. Поэтому я решил скачать второй пример, который называется NullAuthPlugin. Этот компилируется, но я не узнал, как его установить.

Итак, мой вопрос один: есть ли хороший и обновленный учебник для этого (TechNotes от 2008-09-16)?

И вопрос номер два, если это может быть разработано с C# (Xamarin.Mac / MonoMac), потому что я не очень хорош в разработке Objective-C / C / C++.

Спасибо!

2 ответа

Решение

Что ж, об ошибках сообщалось в Apple несколько раз, но пока они ничего не делали. Самый простой ответ: вам нужна исправленная версия плагина NameAndPassword - официальная версия не работает. Я установил свой исправленный плагин на GitHub: https://github.com/skycocker/NameAndPassword

Важно, чтобы вы заменили

<string>loginwindow:login</string>

строка в базе данных политики авторизации с

<string>NameAndPassword:invoke</string>

В противном случае он не войдет в систему. Я бы не TheDarkKnight этого без помощи TheDarkKnight.

Прежде всего: никогда, НИКОГДА, НИКОГДА не начинайте отлаживать плагин входа в систему, поместив его в праве входа в консоль. Вам необходимо создать специальный тестовый "фиктивный" прямо в базе данных auth, полностью независимый от любых других прав, которые ОС может потребовать во время своей работы. Назовите это как "MyTestRight-RemoveMeAfterTest".

Создайте файл plist, который выглядит примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>class</key>
    <string>evaluate-mechanisms</string>
    <key>comment</key>
    <string>Used to validate a terminal user.</string>
    <key>mechanisms</key>
    <array>
        <string>NameAndPassword:invoke</string>
    </array>
</dict>
</plist>

Установите его с помощью команды "security" из терминала:

"авторизация безопасности db пишет MyTestRight-RemoveMeAfterTest

НИКОГДА не редактируйте auth db вручную, даже если вы все еще можете это сделать, как в случае с osx до 10.9. Если вы допустили ошибку и ОС не может разобрать файл, вы окажетесь в мире боли. Я был там. Я делал эти плагины годами. Если ОС не может прочитать файл, вы будете в той же ситуации, если ваш плагин зависает при входе в систему - без проблем. Если у вас не было предвидения для включения SSH, вам придется загружаться в другой раздел или загружаться из резервной копии машины времени. В последнем случае лучше сохранить самые последние изменения на внешнем диске.

После того, как вы установили права в БД, вы должны протестировать его из внешней программы.

Вам необходимо вызвать инфраструктуру безопасности, как показано в файле readme, включенном в пример имени и пароля, и запросить ваше право, как это сделала бы ОС.

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

Другие вопросы по тегам