OS X授权机制实际上是做什么的?
背景 我试图更好地理解OS X登录过程,以便确定实现VPN Single Sign On的最佳方法。 如果我错了,请纠正我,但我相信- launchd(8)调用gettyent(3),并且因此确定从ttys(5)执行loginwindow.app对/dev/console。 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;为用户启动登录项)。 问题 我非常想确认我对每种机制功能的理解: 他们的源代码公开吗? 我知道非builtin机制是由可以在下找到的插件定义的/System/Library/CoreServices/SecurityAgentPlugins,但是我找不到从中构建它们的源。我也找不到在哪里builtin定义机制。 如果来源不可用,这些机制是否记录在任何地方? 观察结果 loginwindow:login如果在 builtin:forward-login和之前调用凭证,如何提示输入凭证builtin:auto-login?它是否检查上下文中的此类凭据,如果存在则跳过自身?似乎很奇怪。 此外,如Apple的802.1X身份验证技术白皮书中所述: 配置登录窗口模式并在登录窗口中输入用户名和密码后,将发生两件事。首先,登录窗口将使用用户输入的用户名和密码通过802.1X对计算机进行身份验证。802.1X身份验证成功后,登录窗口将向外部目录验证相同的用户名和密码。 由于该认证的第二阶段由pam_opendirectory.so模块处理,并且取决于存在的网络,因此第一阶段(通过802.1X认证到网络)必须在此之前发生。也就是说,它必须在builtin:authenticate机制之前发生。 从对loginwindow插件二进制文件的随意检查来看,它似乎可以处理802.1X身份验证-但在该插件之前调用的唯一机制builtin:authenticate是loginwindow:login。我认为这种机制不仅会显示登录提示,还会尝试802.1X身份验证,是否正确?(如果是这样,这不仅看起来有点草率,恕我直言,而且表明EFI /自动登录的凭据不能用于802.1X登录窗口身份验证。)