自定义身份验证筛选器的Spring Security 401错误

时间:2011-03-24 07:45:58

标签: authentication spring-security http-status-code-401

我们正在使用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进行控制。

有什么想法吗? (Bdw ......我对Spring Security比较新,我正在调试另一个人的代码)

非常感谢!

Krt_Malta

1 个答案:

答案 0 :(得分:1)

  

作为服务器,我们使用的是基于Tomcat 6.0.29的自定义服务器。

首先需要验证问题是否与Tomcat服务器的配置有关(例如,是否设置了Tomcat身份验证,是否希望您在Tomcat服务器配置中提供客户端证书(clientAuth="true")等等。

如果您可以验证控件是否正在通过Spring Security的初始Tomcat身份验证,则可能存在不同的解决方案。您没有向我们提供所有相关代码,但看起来代码正在检查要与身份验证请求一起传递的其他表单参数。这将在WebConstants.PARAM_J__TYPE常量中定义。