【发布时间】: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