【问题标题】:Unable to get user from kerberos for ldap authentication interceptor无法从 kerberos 获取用户以进行 ldap 身份验证拦截器
【发布时间】:2015-07-16 14:32:39
【问题描述】:

我使用 kerberos 进行身份验证,使用 ldap 进行授权。 我的 kerberos 身份验证工作正常。我面临的问题是 ldap 在 kerberos 返回用户名之前被调用。 我的 ldap 代码在一个拦截器中,它首先被调用,但它获取 request.getRemotUser() 为 null 并且 kerberos 在此之后返回用户名,正如我在日志中看到的那样。 那么如何先调用kerberos再调用ldap呢? 我的 ldap 代码在 Interceptor 类中的 springs 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 时,它会返回我的用户名。抱歉没有发布详细的代码。我希望这个问题是可以理解的。

【问题讨论】:

  • 想关闭这个问题或发表评论,为什么给定的答案不算数?现在,它会显示为打开状态,可能会混淆其他用户。

标签: java spring spring-security ldap kerberos


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-06-12
    • 2023-03-22
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 2010-10-07
    相关资源
    最近更新 更多