使用Spring Security委派/转发Kerberos票证

时间:2012-09-21 11:01:45

标签: java spring single-sign-on kerberos

我正在尝试查找有关Kerberos的Spring Security实现是否处理授予票证的授权/转发的信息,以便我的应用服务器可以调用其他Kerberos服务重用主体TGT?任何关于此的文件都将受到高度赞赏。干杯!

3 个答案:

答案 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