Skip to content
This repository has been archived by the owner on Jan 6, 2023. It is now read-only.

is spring boot m7 and spring security 5.0 in withSockJS status 200 error #44

Closed
vnobo opened this issue Dec 6, 2017 · 6 comments
Closed

Comments

@vnobo
Copy link

vnobo commented Dec 6, 2017

  @Configuration
  @EnableWebSocketMessageBroker
  public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

               @Override
               public void registerStompEndpoints(StompEndpointRegistry registry) {
                            registry.addEndpoint("/charm-
                            chat").setAllowedOrigins("http://localhost:4200").withSockJS();
               }

              @Override
              public void configureMessageBroker(MessageBrokerRegistry config) {
                           config.setApplicationDestinationPrefixes("/app");
                           config.enableSimpleBroker("/topic", "/queue");
               }
    }

 @Configuration
 public static class DefaultWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .anyRequest().authenticated()
                .and()
                .csrf()
                .ignoringAntMatchers("/charm-chat/**")
                .and()
                .headers()
                .frameOptions().sameOrigin()
                .and()
                .httpBasic();
    }

    @Bean
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }
}

ERROR:

WebSocket connection to 'ws://localhost:8080/charm-chat' failed: Error during WebSocket handshake: Unexpected response code: 200

@kum-deepak
Copy link
Member

Not sure what may be the issue. The following will be helpful:

  • Have you tried it with other versions - like Angular 4?
  • I will like to see your Stomp Config

@vnobo
Copy link
Author

vnobo commented Dec 7, 2017

  const stompConfig: StompConfig = {
          // Which server?
         url: 'ws://192.168.2.3:8080/charm-chat',

       // Headers
      // Typical keys: login, passcode, host
      headers: {
         'x-auth-token': AuthService.getToken()
      },

     // How often to heartbeat?
    // Interval in milliseconds, set to 0 to disable
    heartbeat_in: 0, // Typical value 0 - disabled
    heartbeat_out: 20000, // Typical value 20000 - every 20 seconds

    // Wait in milliseconds before attempting auto reconnect
    // Set to 0 to disable
   // Typical value 5000 (5 seconds)
   reconnect_delay: 5000,

  // Will log diagnostics on console
  debug: true

};

@kum-deepak
Copy link
Member

Just by looking at the code - two potential reasons:

  • SockJS is a different protocol than WebSocket. The URL you are specifying is WebSocket (url: 'ws://192.168.2.3:8080/charm-chat') while the server seems to be configured for SockJS.
               public void registerStompEndpoints(StompEndpointRegistry registry) {
                            registry.addEndpoint("/charm-
                            chat").setAllowedOrigins("http://localhost:4200").withSockJS();
               }
  • Depending on which phase of the application you are using AuthService.getToken() - value may not be available.

@vnobo
Copy link
Author

vnobo commented Dec 7, 2017

thank you
i find a bug?
see:
const stompConfig: StompConfig = {
// Which server?
url: 'ws://192.168.2.3:8080/charm-chat',

 // Headers
// Typical keys: login, passcode, host
headers: {
          'x-auth-token': AuthService.getToken(),
          'ssssss':'sss'
  },

    // How often to heartbeat?
   // Interval in milliseconds, set to 0 to disable
   heartbeat_in: 0, // Typical value 0 - disabled
   heartbeat_out: 20000, // Typical value 20000 - every 20 seconds

   // Wait in milliseconds before attempting auto reconnect
   // Set to 0 to disable
   // Typical value 5000 (5 seconds)
   reconnect_delay: 500000,

    // Will log diagnostics on console
    debug: true

};
look debug info:
GET ws://192.168.2.3:8080/charm-chat HTTP/1.1
Host: 192.168.2.3:8080
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Origin: http://192.168.2.3:4200
Sec-WebSocket-Version: 13
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/62.0.3202.94 Safari/537.36
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Sec-WebSocket-Key: epdDMjwi4d034g4FyosJcA==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Sec-WebSocket-Protocol: v10.stomp, v11.stomp, v12.stomp
look request headers is 'ssssss' 'x-auth-token' are none

@kum-deepak
Copy link
Member

Actually it is not supposed to be sent those as part of HTTP headers. STOMP headers - from the STOMP Config - are sent as a CONNECT Frame - after the WebSocket handshake.

@vnobo
Copy link
Author

vnobo commented Dec 7, 2017

thank you

@vnobo vnobo closed this as completed Dec 7, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants