Spring security 在SpringSecurity 4中,最简单的重写BasicAuthenticationEntryPoint的方法是什么?

Spring security 在SpringSecurity 4中,最简单的重写BasicAuthenticationEntryPoint的方法是什么?,spring-security,spring-security4,Spring Security,Spring Security4,我无法在上面找到答案(例如,此处)。 ) 我只想覆盖BasicAuthenticationEntryPoint,而不覆盖其他筛选器和其他人员: <bean id="authenticationEntryPoint" name="authenticationEntryPoint" class="com.myclass.BasicAuthenticationEntryPoint"> <property name="realmName" value="myapp"

我无法在上面找到答案(例如,此处)。 )

我只想覆盖BasicAuthenticationEntryPoint,而不覆盖其他筛选器和其他人员:

<bean id="authenticationEntryPoint" name="authenticationEntryPoint"
      class="com.myclass.BasicAuthenticationEntryPoint">
    <property name="realmName" value="myapp" />
</bean>
因此,我需要禁用自动配置,但我不想这样做:

<security:http auto-config="false" ...

这适用于我的Spring Security 3(我认为它应该适用于Spring 4),无需配置任何过滤器:

public class CustomBasicAuthenticationEntryPoint extends BasicAuthenticationEntryPoint {

    @Override
    public void commence(final HttpServletRequest request, final HttpServletResponse response, final AuthenticationException authException) throws IOException, ServletException {

        response.setStatus( HttpServletResponse.SC_UNAUTHORIZED);
    }
}
更新:

CustomBasicAuthenticationEntryPoint是一个Springbean。你必须把这件事告诉斯普林。就像在你的帖子中(我刚刚在回答中更改了它的名称):


您还需要告诉Spring Security使用此bean作为入口点,而不是默认入口点:

<security:http entry-point-ref="authenticationEntryPoint" ...
完整解决方案:

1) 在http元素处配置authenticationEntryPoint:

<http entry-point-ref="authenticationEntryPoint" ...>
</http>

它配置ExceptionTranslationFilter的authenticationEntryPoint

2) 在http基本元素处配置authenticationEntryPoint

<http-basic entry-point-ref="authenticationEntryPoint"/>


它配置BasicAuthenticationFilter的authenticationEntryPoint

是关于REST身份验证的吗?它是REST身份验证,但问题是一般性的。是否使用任何注释?没有配置它如何工作?谢谢你的帮助!我能够在http元素中配置authenticationEntryPoint:
请注意,它配置了ExceptionTranslationFilter的authenticationEntryPoint。为了完成解决方案,我在http基本元素(配置基本身份验证过滤器)中配置了authenticationEntryPoint
不客气。我没有配置任何过滤器,它适合我。很高兴它能工作。如果您提供了错误的凭据,它将无法工作。您需要覆盖SimpleRuthenticationFailureHandler来处理身份验证失败。
<security:http entry-point-ref="authenticationEntryPoint" ...
<http entry-point-ref="authenticationEntryPoint" ...>
</http>
<http-basic entry-point-ref="authenticationEntryPoint"/>