Spring Security的401错误自定义验证过滤器
问题描述:
我们正在开发使用Java和春天有个网站。作为服务器,我们使用基于Tomcat 6.0.29的自定义服务器。 在web.xml文件中有这样的自定义验证过滤声明:Spring Security的401错误自定义验证过滤器
<security:custom-filter ref="extraFieldAuthenticationProvider"
before="FORM_LOGIN_FILTER"/>
与下列一起:
<security:form-login login-page="/view/page/login"
default-target-url="/view/page/display"
authentication-failure-handler-ref="CustomAuthenticationFailureHandler"
authentication-success-handler-ref="CustomAuthenticationSuccessHandler"/>
以下是extraFieldAuthenticationProvider类:
public class ExtraFieldAuthenticationFilter
extends UsernamePasswordAuthenticationFilter {
private final static Logger LOG =
Logger.getLogger(ExtraFieldAuthenticationFilter.class.getName());
@Override
protected String obtainUsername(HttpServletRequest request) {
String userName = super.obtainUsername(request);
String type = request.getParameter(WebConstants.PARAM_J__TYPE);
return StringUtils.join(new String[]{type, userName});
}
}
问题是不成功的登录,我得到一个Tomcat 401错误。控制不在CustomAuthenticationFailureHandler
。
任何想法PLZ? (BDW ...我是比较新的Spring Security的,我调试另一个人的代码)
非常感谢!
Krt_Malta
答
作为服务器,我们使用基于Tomcat的6.0.29定制服务器。
您首先需要验证问题是否与你的Tomcat服务器的配置(例如,是Tomcat的认证成立,是希望你在你的Tomcat服务器配置提供客户端证书(clientAuth="true"
)等
如果您可以验证控件或不获取过去初始Tomcat的身份验证Spring Security的,那么有可能是不同的解决方案。您还没有与所有相关的代码提供给我们,但看起来像的代码被检查额外形式参数连同认证请求被传递,这将在WebConstants.PARAM_J__TYPE
常数来定义。