我正在尝试查找有关Kerberos的Spring Security实现是否处理授予票证的授权/转发的信息,以便我的应用服务器可以调用其他Kerberos服务重用主体TGT?任何关于此的文件都将受到高度赞赏。干杯!
答案 0 :(得分:3)
自Spring Security Kerberos 1.0.0。
发布以来,这是可能的 SunJaasKerberosTicketValidator
可以配置为存储身份验证上下文:
ticketValidator.setHoldOnToGSSContext(true);
这里有一些代码可以帮助您入门:
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication instanceof KerberosServiceRequestToken) {
KerberosServiceRequestToken token = (KerberosServiceRequestToken) authentication;
if (token.getTicketValidation() == null) {
// No delegation possible...
} else {
GSSContext context = token.getTicketValidation().getGssContext();
// ...
}
}
答案 1 :(得分:2)
Spring安全性未实现任何Kerberos功能。如果您指的是kerberos extension ,那么答案是否定的。它只进行身份验证,它只是Java JAAS API Krb5LoginModule
的包装器。
答案 2 :(得分:0)
正如Koraktor所述,SunJaasKerberosTicketValidator类具有与JAAS配置文件等效的详细信息。但是,SunJaasKerberosTicketValidator
的{{1}}标志设置为false。这导致isInitiator
返回false,因此您无法委派凭据。
我做了一个POC,只有在context.getCredDeleg()
设置为true的情况下,我的观察才是委派/转发工作。
我通过编写自己的isInitiator
解决了这个问题,TicketValidator
的所有内容都保持不变,只是将isInitiator标志的条目更改为SunJaasKerberosTicketValidator