Spring boot Error во время рукопожатия WebSocket: неожиданный код ответа: 403 - PullRequest
0 голосов
/ 29 января 2020

Я использую WebSecurity в своем проекте. Аутентификация пользователя использует токен JWT в заголовке. Http-запросы работают нормально, но я не могу установить sh соединение через веб-сокет. Моя конфигурация безопасности:

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http .cors()
                .and().csrf().disable()
                .authorizeRequests()
                .antMatchers(HttpMethod.POST, SIGN_UP_URL).permitAll()
                .antMatchers("/ws**").permitAll()
                .anyRequest().authenticated()
                .and()
                .addFilter(new JWTAuthenticationFilter(authenticationManager()))
                .addFilter(new JWTAuthorizationFilter(authenticationManager()));
    }
    @Bean
    public CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(Arrays.asList("*"));
        configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"));
        configuration.setAllowedHeaders(Arrays.asList("authorization", "content-type", "x-auth-token","Accept","Cache"));
        configuration.setExposedHeaders(Arrays.asList("Authorization, body"));
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }

    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder);
    }

И мой WebSocketConfig

@Configuration

@EnableWebSocket
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer{

    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(new SocketHandler(), "/user_sock").addInterceptors(new HttpSessionHandshakeInterceptor())
                .setAllowedOrigins("*");;
    }

}

Я пытался отреагировать как клиентом, так и расширением chorme для тестирования, но я получаю такой же ответ об ошибке.

WebSocket connection to 'ws://localhost:8080/websocket' failed: Error during WebSocket handshake: Unexpected response code: 403

Любая помощь будет принята с благодарностью. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...