无法从kerberos获取用户的ldap身份验证拦截器

时间:2015-05-06 12:39:59

标签: java spring spring-security ldap kerberos

  

我使用kerberos进行身份验证,使用ldap进行授权。   我的kerberos身份验证工作正常。我面临的问题是在kerberos返回用户名之前调用ldap。   我的ldap代码在一个拦截器内部,它首先被调用,但它将request.getRemotUser()作为null,并且kerberos在此之后返回用户名,正如我在日志中看到的那样。   那么如何首先调用kerberos然后再调用ldap?   我的ldap代码是在Interceptor类中的Spring HandlerInterceptorAdaptor的preHandlerMethod内部:

@override
public boolean preHandler(HttpServletRequest request,HttpServletResponse response,Object handler){
 String userName = request.getRemoteUser();
...
  if (isAuthorized(userName)) {
    //setting userName in session here
  }
  else {
    //ldap authentication failed
  }
}
  

拦截器在application-servlet.xml中定义,kerberos在security-config.xml中配置,两个条目都在web.xml中创建。 security-config.xml位于web.xml中的application-servlet.xml之前   所以在上面的代码中,我得到的用户名为null,但在日志中调用kerberos时,它返回我的用户名。很抱歉没有发布详细代码。我希望这个问题是可以理解的。

1 个答案:

答案 0 :(得分:0)

也许我不太明白你试图解决的问题/问题,但为什么不注入LdapUserDetailsServiceImpl,作为KerberosServiceAuthenticationProvider的UserDetailsS​​ervice?

这样Kerberos正在进行身份验证并对Ldap进行授权(即填充LdapUserDetails对象)。