Что на самом деле делают механизмы авторизации OS X?

13

Фон 

Я пытаюсь лучше понять процесс входа в OS X, чтобы выбрать лучший способ для достижения единой регистрации VPN .

Пожалуйста, поправьте меня, если я ошибаюсь, но я верю, что ...

  1. launchd(8)звонки gettyent(3)и, таким образом, определяет от ttys(5)выполнить loginwindow.appдля /dev/console.

  2. loginwindow.appпытается получить system.login.consoleправо авторизации, для которого база данных авторизации определяет следующие механизмы (перечислены вместе с моим пониманием их функции); те, которые являются привилегированными, запускаются внутри authdпроцесса (как root), тогда как те, которые не являются привилегированными, запускаются внутри SecurityAgentпроцесса (как _securityagent):

    • builtin:policy-banner(отображает баннер окна входа в систему , если установлен).
    • loginwindow:login (запрашивает учетные данные).
    • builtin:login-begin
    • builtin:reset-password,privileged(выполняет сброс пароля с помощью Apple ID ).
    • builtin:forward-login,privileged (пересылает учетные данные из EFI при загрузке).
    • builtin:auto-login,privileged (применяет учетные данные автоматического входа при загрузке).
    • builtin:authenticate,privileged(вызывает pam_authenticate(3)для authorizationслужбы; устанавливает значение контекста "uid").
    • PKINITMechanism:auth,privileged (инициализирует Kerberos, получая TGT).
    • builtin:login-success
    • loginwindow:success (защищает сеанс входа в систему от несанкционированного удаленного доступа; регистрирует вход в систему в системных базах utmp и utmpx; устанавливает владельца и разрешения для консольного терминала).
    • HomeDirMechanism:login,privileged (монтирует домашний каталог пользователя).
    • HomeDirMechanism:status (отображает ход монтажа домашнего каталога).
    • MCXMechanism:login (применяет профили конфигурации).
    • loginwindow:done (сбрасывает предпочтения пользователя, чтобы включить глобальные системные настройки по умолчанию; настраивает звук мыши, клавиатуры и системы, используя предпочтения пользователя; устанавливает разрешения группы пользователей; извлекает запись пользователя из служб каталогов и применяет эту информацию к сеансу; загружает вычисления пользователя окружение - включая предпочтения, переменные среды, права доступа к устройствам и файлам, доступ к цепочке ключей и т. д .; запускает Dock, Finder и SystemUIServer; запускает элементы входа для пользователя).

Вопросов

Я бы очень хотел подтвердить мое понимание функций каждого механизма:

  1. Доступен ли их исходный код открыто? Я знаю, что немеханизмы builtinопределяются подключаемыми модулями /System/Library/CoreServices/SecurityAgentPlugins, но я не могу найти источник, из которого они были построены. Также я не могу найти, где определены builtinмеханизмы.

  2. Если источник недоступен, документированы ли механизмы где-нибудь?

наблюдения

  1. Как loginwindow:loginзапросить учетные данные, если они были вызваны ранее, builtin:forward-login и builtin:auto-loginлюбой из них вызывает обход GUI? Проверяет ли он контекст для таких учетных данных и пропускает ли сам себя, если они присутствуют? Кажется странным

  2. Кроме того, как описано в техническом документе Apple по аутентификации 802.1X :

    Когда режим окна входа в систему настроен и пользователь вводит имя пользователя и пароль в окне входа в систему, произойдут две вещи. Во-первых, окно входа в систему аутентифицирует компьютер через сеть 802.1X в сети, используя имя пользователя и пароль, введенные пользователем. После успешной аутентификации 802.1X окно входа в систему будет аутентифицировать то же имя пользователя и пароль для внешнего каталога.

    Поскольку второй этап этой аутентификации обрабатывается pam_opendirectory.soмодулем и зависит от присутствующей сети, перед этим обязательно должен пройти первый этап (аутентификация по сети через 802.1X). То есть это должно произойти раньше builtin:authenticateмеханизма.

    Судя по случайной проверке loginwindowдвоичного файла плагина, он обрабатывает такую ​​аутентификацию 802.1X, но единственным механизмом, вызываемым в этом плагине до этого, builtin:authenticateявляется loginwindow:login. Правильно ли я считаю, что этот механизм не только отображает запрос на вход в систему, но и также пытается выполнить аутентификацию 802.1X? (Если так, то это не только кажется немного неаккуратным IMHO, но также предполагает, что учетные данные из EFI / auto-login нельзя использовать для аутентификации окна входа в систему 802.1X.)

eggyal
источник

Ответы:

1
  1. Из того, что я помню, loginwindow: login на самом деле используется при порождении окна входа в GUI, аналогично builtin: policy-banner. Так что логично быть порождённым перед остальными действиями. Таким образом, окно с графическим интерфейсом пользователя - это то, что на самом деле не имеет значения / обходится, а не сами учетные данные.

  2. Что именно вы хотели бы изменить и для какой цели? Например, если вам требуется, чтобы плагин авторизации вызывался в других ситуациях, вы можете сделать это, отредактировав auth.db.

Также подсистемы встроенной аутентификации должны обрабатывать различия между 802.1X и локальной аутентификацией.

Сверхразум
источник
1
builtin:forward-login,privileged

Пересылает успешный вход в систему FileVault в окно входа в OS X и обходит необходимость входа в него. Это как единый вход. Я отключаю это в своей среде, так как она не использует профиль 802.1X, который я настроил. Я бы попробовал это сделать.

OS X: как отключить автоматический вход в систему, когда FileVault включен

sudo defaults write /Library/Preferences/com.apple.loginwindow DisableFDEAutoLogin -bool YES
mistacabbage
источник