egg*_*yal 13 security login authentication mac-osx pam
我试图更好地了解 OS X 登录过程,以确定实现VPN 单点登录的最佳方式。
如果我错了,请纠正我,但我相信——
launchd(8)
调用gettyent(3)
并因此确定 fromttys(5)
执行loginwindow.app
for /dev/console
。
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
(通过获取 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
两者都会导致绕过 GUI?它是否检查此类凭据的上下文并在它们存在时自行跳过?看起来很奇怪。
此外,如 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 登录窗口身份验证。)
据我所知,loginwindow:login 实际上用于生成 GUI 登录窗口,类似于builtin:policy-banner。因此,在其余操作之前生成是合乎逻辑的。因此,GUI 窗口实际上是不相关/可绕过的窗口,而不是凭证本身。
您到底想修改什么?目的是什么?例如,如果您需要在其他情况下调用授权插件,您可以通过编辑 auth.db 来实现。
此外,内置:身份验证子系统应处理 802.1X 和本地身份验证之间的差异。
归档时间: |
|
查看次数: |
3109 次 |
最近记录: |