Проблема безопасности Springboot при развертывании войны на tomcat

У меня есть приложение Springboot, которое я могу запускать локально без проблем с аутентификацией. Однако, когда я запускаю эту сборку в WAR и на сервере tomcat, поведение отличается.

Кажется, что цепочка фильтров не срабатывает, может ли кто-нибудь мне помочь?

Например, у меня есть следующий HelloController:

      @RestController
@RequestMapping("/api/hello")
public class HelloController {

    @GetMapping("/hi")
    public String hello() {
        return "hi";
    }

    @GetMapping("/bye")
    @PreAuthorize("hasRole('USER')")
    public String bye() {
        return "bye";
    }

}

И WebSecurityConfig следующим образом:

      @EnableWebSecurity
@Configuration
public class WebSecurityConfig
{

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.cors().and().csrf().disable()
                .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and()
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
                .authorizeRequests().antMatchers("/api/auth/**").permitAll()
                .antMatchers("/api/hello/**").permitAll()
                .anyRequest().authenticated();

        http.authenticationProvider(authenticationProvider());

        http.addFilterBefore(authenticationJwtTokenFilter(), UsernamePasswordAuthenticationFilter.class);

        return http.build();
    }

}

Итак, когда я вызываю конечную точкуlocalhost:8080/api/hello/hiон возвращается с приветом, как и ожидалось (потому что он общедоступный).

Когда я вызываю эту конечную точку при развертывании на tomcat, она дает мне:Full authentication is required to access this resource

--редактировать 1--

Когда я комментирую SecurityFilterChain, это не имеет значения. Я думаю, что он не правильно настроен...

-- изменить 2 --

Я использую spring-boot 2.7.5 и tomcat 8.5.

Я что-то забыл? Заранее спасибо!

0 ответов

Другие вопросы по тегам