Spring security 在SpringSecurity 4中,最简单的重写BasicAuthenticationEntryPoint的方法是什么?
我无法在上面找到答案(例如,此处)。 ) 我只想覆盖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"
<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"/>