Spring Security自定义认证过滤器出现401错误

3
我们正在使用Java和Spring开发网站。作为服务器,我们使用基于Tomcat 6.0.29的自定义服务器。 在web.xml文件中,声明了这个自定义认证过滤器:
<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
请问有什么想法吗?(顺便说一句,我对Spring Security比较新,在调试其他人的代码)
非常感谢!
Krt_Malta
1个回答

1
作为服务器,我们使用基于Tomcat 6.0.29的自定义服务器。
首先,您需要验证问题是否与Tomcat服务器的配置有关(例如,Tomcat身份验证设置是否已设置,它是否期望您提供客户端证书(在Tomcat服务器配置中clientAuth="true"),等等)。
如果您可以验证控件是否或未通过初始Tomcat身份验证到达Spring Security,则可能存在不同的解决方案。您没有向我们提供所有相关代码,但看起来代码正在检查是否传递了附加的表单参数以及身份验证请求。这将在WebConstants.PARAM_J__TYPE常量中定义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接