我正在尝试查找Kerberos的Spring Security实现是否处理票据授予票证的委托/转发,以便我的应用程序服务器可以重用主体TGT调用其他Kerberos服务?任何关于这方面的文档都将不胜感激。干杯!
发布于 2012-09-21 11:52:48
Spring security没有实现任何Kerberos功能。如果您指的是kerberos ,那么答案是否定的。它只做身份验证,只是Java JAAS API Krb5LoginModule
的包装器。
发布于 2016-11-24 13:21:37
自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();
// ...
}
}
发布于 2019-05-22 13:06:14
正如Koraktor提到的,SunJaasKerberosTicketValidator类具有与JAAS配置文件等效的详细信息。但是,SunJaasKerberosTicketValidator
将isInitiator
标志设置为false。这会导致context.getCredDeleg()
返回false,并且您不能委托凭据。我做了一个POC,我观察到只有当isInitiator
设置为true时,委派/转发才有效。
我通过编写自己的TicketValidator
解决了这个问题,除了将isInitiator标志的条目更改为options.put("isInitiator", "true");
之外,SunJaasKerberosTicketValidator
的所有内容都保持不变
https://stackoverflow.com/questions/12529243
复制相似问题