OS X授权机制实际上是做什么的?


13

背景 

我试图更好地理解OS X登录过程,以便确定实现VPN Single Sign On的最佳方法。

如果我错了,请纠正我,但我相信-

  1. launchd(8)调用gettyent(3),并且因此确定从ttys(5)执行loginwindow.app/dev/console

  2. loginwindow.app尝试获取system.login.console授权,授权数据库为此指定了以下机制(与我对其功能的理解一起列出);那些特权的authd进程在进程内运行(作为根用户),而那些没有特权的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 (通过获取TGT初始化Kerberos)。
    • 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?它是否检查上下文中的此类凭据,如果存在则跳过自身?似乎很奇怪。

  2. 此外,如Apple的802.1X身份验证技术白皮书中所述:

    配置登录窗口模式并在登录窗口中输入用户名和密码后,将发生两件事。首先,登录窗口将使用用户输入的用户名和密码通过802.1X对计算机进行身份验证。802.1X身份验证成功后,登录窗口将向外部目录验证相同的用户名和密码。

    由于该认证的第二阶段由pam_opendirectory.so模块处理,并且取决于存在的网络,因此第一阶段(通过802.1X认证到网络)必须在此之前发生。也就是说,它必须在builtin:authenticate机制之前发生。

    从对loginwindow插件二进制文件的随意检查来看,它似乎可以处理802.1X身份验证-但在该插件之前调用的唯一机制builtin:authenticateloginwindow:login。我认为这种机制不仅会显示登录提示,还会尝试802.1X身份验证,是否正确?(如果是这样,这不仅看起来有点草率,恕我直言,而且表明EFI /自动登录的凭据不能用于802.1X登录窗口身份验证。)

Answers:


1
  1. 从我记得的情况来看,loginwindow:login实际上用于生成GUI登录窗口,类似于Builtin:policy-banner。因此,在其余动作之前产生是合乎逻辑的。因此,GUI窗口实际上是不相关/可绕过的窗口,而不是凭据本身。

  2. 您到底想修改什么,并针对什么目的?例如,如果您需要在其他情况下调用授权插件,则可以通过编辑auth.db来实现。

另外,builtin:authenticate子系统应处理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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.