如何获取Kerberos默认主体



如果我在终端中键入kinit

kinit

然后我得到以下Kerberos身份验证提示:

Password for JayFrizzle@ANT.STACKOVERFLOW.COM:

我想知道的是,有没有一种方法可以通过shell(或python)通过程序获取username@DOMAIN.COM字符串?kinit不知何故知道谁是默认用户(在我的例子中是JayFrizzle)。有没有一种方法可以通过调用Kerberos或从我计算机上预先存在的文件中获取这些信息?

简单的答案是,在用户获得有效的Kerberos票证之前,没有可靠的机制可以确定用户的Kerberos主体。

正如我在评论中提到的,kinit将使用您的本地用户名作为Kerberos主体的用户名部分。但是:不能保证这是正确的;完全有可能的是,某人可能总是使用与他们的本地用户名不同的显式用户名CCD_ 5。

更棘手的是:根据本地系统配置,kinit甚至可能不参与获取Kerberos令牌。例如,sssd身份验证服务本机支持Kerberos,并且有自己的配置,该配置与MIT(或Heimdal)Kerberos包使用的配置完全不同。

SSSD允许在本地用户名和Kerberos主体名称之间进行映射(例如,当您以JayFrizzle身份登录到本地系统时,您将自动获得jayf@EXAMPLE.COM)。

这也意味着确定Kerberos域实际上也不可能。如果您只是使用MIT kerberos工具,那么理论上可以解析/etc/krb5.conf中的默认域。。。但同样,这可能是正确的,也可能不是正确的(因为用户可以在运行kinit时指定明确的域名)。

因此,如果您了解您的环境,并且知道您只依赖于传统的MIT kerberos命令行工具,则可以使用本地用户名和/etc/krb5.conf中的默认域来获取所需信息。

但实际上,您应该只要求用户通过其他方式获取凭据,然后使用klist或一些编程模拟来获得主体名称。

尝试使用oklist命令,它将显示如下默认主体。

默认本金:user@DOMAIN.COM

有效启动使服务主体过期。

最新更新