此问题与this one
有关我定义了自己的AuthenticationEntryPoint
。启用后,我在尝试执行put请求时收到异常:
org.springframework.security.authentication.InsufficientAuthenticationException:访问此资源需要完全身份验证
但事实并非如此。
有人知道为什么以及如何解决这个问题? 如果需要更多配置信息,请与我们联系。
这是我的配置:
@Configuration
@Order(1)
public static class RestWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
...
@Override
protected void configure(HttpSecurity http) throws Exception {
...
http
.authorizeRequests()
.antMatchers("/rest/**").hasAnyRole(Sec.ADMIN,Sec.SUPER_USER)
...
.and().exceptionHandling().authenticationEntryPoint(restAuthenticationEntryPoint)
如果我注释掉最后一行(" authenticationEntryPoint ..."),我的PUT
请求就可以正常工作。
我需要使用该EntryPoint以防止重定向到登录表单,因为这是一个REST服务。
我的RestAuthenticationEntryPoint类是:
@Component( "restAuthenticationEntryPoint" )
public final class RestAuthenticationEntryPoint implements AuthenticationEntryPoint {
@SuppressWarnings("unused")
private final Logger logger = Logger.getLogger(getClass());
@Override
public void commence(final HttpServletRequest request, final HttpServletResponse response, final AuthenticationException authException) throws IOException {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authException.getMessage());
}
}