我正在尝试编写一个脚本来检查我的Kerberos票证是有效的还是即将到期的。为此,我使用klist --json或klist生成当前活动票证的列表(取决于安装的Kerberos版本),然后使用正则表达式或JSON解析结果。
最终的结果是,我得到了一张看上去像这样的票清单:
Issued Expires Principal
Aug 19 16:44:51 2020 Aug 22 14:16:55 2020 krbtgt/EXAMPLE.COM@EXAMPLE.COM
Aug 20 09:05:06 2020 Aug 20 19:05:06 2020 ldap/abc-dc101.example.com@EXAMPLE.COM
Aug 20 09:32:18 2020 Aug 20 19:32:18 2020 krbtgt/DEV.EXAMPLE.COM@EXAMPLE.COM只要做一点点工作,我就可以解析这些结果并验证它们。然而,我很好奇,Kerberos是否有可能从同一个校长那里得到两张票。阅读关于Kerberos使用的MIT页面,似乎只有一张票是“初始”票。
我是否可以依赖于主体的唯一性,或者是否需要检查来自同一主体的多张票的可能性?
发布于 2020-08-21 11:02:27
比那要复杂一些。
TL;博士,您的第二个TGT似乎与跨领域身份验证有关,请参见下面的粗体。
klist显示默认系统缓存中存在的票证:
FILE缓存、未启动KEYRING内核服务等),则会发出错误消息。A.R中的TGT转换为领域R中的TGT,从而允许您在领域B.R中获取服务票证(这将是与Active Directory一起使用的默认分层路径,但可以在[capath]或sthg下定义自定义路径,这取决于在领域之间定义的信任)但是请注意,并非所有的服务票都存储在缓存中--对于应用程序来说,从缓存中获取TGT、获取服务票证并将其保留在内存中是合法的。这就是Java所做的。
应用程序(或一组应用程序)使用私有缓存cf是合法的。env变量KRB5CCNAME (当您在同一个Linux帐户下运行多个服务并且不想混淆它们的SPN时非常有用),所以除非您显式地点击这个自定义缓存,否则您无法看到它们的klist票证。
对于一个应用程序来说,完全不使用缓存并将其所有的票都保留在内存中是合法的。这就是Java在提供自定义JAAS配置时所做的事情,该配置授权使用主体/keytab进行身份验证。
https://stackoverflow.com/questions/63509932
复制相似问题