Я использую spring-boot 2.0.4 с Spring-security, OAuth и apache-cxf.для проверки работоспособности приложение регистрирует bean-компонент по умолчанию, который принимает urlMapping ping.html.
В целях безопасности я отметил, что все запросы должны иметь определенную роль, кроме ping.HTML.Но когда я пытаюсь получить доступ к ping.html, он запрашивает ту же безопасность, что и для любой другой страницы приложения.
Вот мои фрагменты кода:
@Override
protected void configure(HttpSecurity http) throws Exception {
http = http.antMatcher("**").sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).enableSessionUrlRewriting(true).and();
http.authorizeRequests().antMatchers("/ping.html").permitAll().anyRequest().access("oauthHasScope('myApplication.trust')").and().anonymous().disable();
http.httpBasic().authenticationEntryPoint(oAuthRedirectAuthenticationEntryPoint);
http.addFilterBefore(oAuthTokenAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
http.exceptionHandling().accessDeniedHandler(myAppAccessDeniedHandler);
http.authorizeRequests().expressionHandler(oAuth2WebSecurityExpressionHandler);
}
Воткод для регистрации сервлетов:
@Bean
public ServletRegistrationBean cxfServlet() {
final ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new CXFServlet(), "/*");
servletRegistrationBean.setLoadOnStartup(1);
return servletRegistrationBean;
}
@Bean
public ServletRegistrationBean healthCheckServletBean() {
ServletRegistrationBean pingHealthCheckServletBean = new ServletRegistrationBean(new DefaultServlet(), "/ping.html");
pingHealthCheckServletBean.setLoadOnStartup(1);
return pingHealthCheckServletBean;
}
Итак, у меня мало сомнений: 1. Как весенняя защита применяется к нескольким сервлетам, как в этом случае.2. Как включить защиту только для одного сервлета и разрешить все для (/ping.html) для сервлета по умолчанию.3. Хотя я упомянул allowAll () для ping.html, почему он блокируется системой безопасности.