4

我正在尝试查找 Kerberos 的 Spring Security 实现是否处理授权票证的委托/转发以便我的应用服务器可以调用其他 Kerberos 服务重用主体 TGT 的信息?任何有关此的文档将不胜感激。干杯!

4

3 回答 3

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();

        // ...
    }
}
于 2016-11-24T13:21:36.920 回答
2

Spring security 不实现任何 Kerberos 功能。如果您指的是 kerberos扩展,那么答案是否定的。它只进行身份验证,它只是 Java JAAS API 的包装器Krb5LoginModule

于 2012-09-21T11:52:47.580 回答
0

正如 Koraktor 所提到的,SunJaasKerberosTicketValidator 类具有与 JAAS 配置文件等效的详细信息。但是,SunJaasKerberosTicketValidator已将isInitiator标志设置为 false。这会导致context.getCredDeleg()返回 false,并且您不能委派凭据。我做了一个 POC,我的观察是委托/转发只有在isInitiator设置为 true 时才有效。

我通过编写自己的方法解决了这个问题TicketValidator,一切都SunJaasKerberosTicketValidator保持原样,除了将 isInitiator 标志的条目更改为 options.put("isInitiator", "true");

于 2019-05-22T13:06:13.973 回答