如何获取 Kerberos 默认主体
How to get Kerberos default principal
如果我在我的终端中输入 kinit
:
kinit
...然后我得到以下 Kerberos 身份验证提示:
Password for JayFrizzle@ANT.whosebug.com:
我想知道的是,有没有办法通过 shell(或 python)以编程方式获取 username@DOMAIN.COM
字符串? kinit
以某种方式知道默认用户是谁(在我的例子中,JayFrizzle)。有没有一种方法可以通过调用 Kerberos 或从我计算机上预先存在的文件中获取此信息?
简短的回答是,在用户获得有效的 Kerberos 票据之前,没有可靠的机制可以确定用户的 Kerberos 主体。
正如我在评论中提到的,kinit
将使用您的本地用户名作为 Kerberos 主体的用户名部分。但是:不能保证这是正确的;完全有可能有人总是 kinit
使用与本地用户名不同的明确用户名。
甚至比这更棘手:根据本地系统配置,kinit
甚至可能不会参与获取 Kerberos 令牌。例如,sssd 身份验证服务本身支持 Kerberos,并且有自己的配置,完全独立于 MIT(或 Heimdal)Kerberos 包使用的配置。
SSSD 允许在本地用户名和 Kerberos 主体名称之间进行映射(例如,当您以 JayFrizzle 身份登录本地系统时,您将自动获取 jayf@EXAMPLE.COM 的 Kerberos 票证)。
这也意味着实际上也无法确定 Kerberos 域。如果您只是使用麻省理工学院的 kerberos 工具,理论上您可以从 /etc/krb5.conf
中解析出默认域...但是,这实际上可能正确也可能不正确(因为用户可以指定一个明确的域名当 运行 kinit
).
因此,如果您了解自己的环境,并且知道自己仅依赖于传统的 MIT kerberos 命令行工具,则可以使用 /etc/krb5.conf
中的本地用户名和默认域来获取您需要的信息想要。
但实际上,您应该只要求用户通过其他方式获取凭据,然后使用 klist
或某些编程模拟来获取主体名称。
如果我在我的终端中输入 kinit
:
kinit
...然后我得到以下 Kerberos 身份验证提示:
Password for JayFrizzle@ANT.whosebug.com:
我想知道的是,有没有办法通过 shell(或 python)以编程方式获取 username@DOMAIN.COM
字符串? kinit
以某种方式知道默认用户是谁(在我的例子中,JayFrizzle)。有没有一种方法可以通过调用 Kerberos 或从我计算机上预先存在的文件中获取此信息?
简短的回答是,在用户获得有效的 Kerberos 票据之前,没有可靠的机制可以确定用户的 Kerberos 主体。
正如我在评论中提到的,kinit
将使用您的本地用户名作为 Kerberos 主体的用户名部分。但是:不能保证这是正确的;完全有可能有人总是 kinit
使用与本地用户名不同的明确用户名。
甚至比这更棘手:根据本地系统配置,kinit
甚至可能不会参与获取 Kerberos 令牌。例如,sssd 身份验证服务本身支持 Kerberos,并且有自己的配置,完全独立于 MIT(或 Heimdal)Kerberos 包使用的配置。
SSSD 允许在本地用户名和 Kerberos 主体名称之间进行映射(例如,当您以 JayFrizzle 身份登录本地系统时,您将自动获取 jayf@EXAMPLE.COM 的 Kerberos 票证)。
这也意味着实际上也无法确定 Kerberos 域。如果您只是使用麻省理工学院的 kerberos 工具,理论上您可以从 /etc/krb5.conf
中解析出默认域...但是,这实际上可能正确也可能不正确(因为用户可以指定一个明确的域名当 运行 kinit
).
因此,如果您了解自己的环境,并且知道自己仅依赖于传统的 MIT kerberos 命令行工具,则可以使用 /etc/krb5.conf
中的本地用户名和默认域来获取您需要的信息想要。
但实际上,您应该只要求用户通过其他方式获取凭据,然后使用 klist
或某些编程模拟来获取主体名称。