为springwebsocket添加身份验证令牌

2ic8powd  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(282)

我正在实现一个简单的套接字,如下所示:

@MessageMapping("/hello")
@SendTo("/topic/greetings")
public Greeting greeting(HelloMessage message) throws Exception {
    Thread.sleep(1000); // simulated delay
    return new Greeting("Hello, " + message.getName() + "!");
}

从客户端:

function connect() {
    var socket = new SockJS('/gs-guide-websocket');
    stompClient = Stomp.over(socket);
    stompClient.connect({}, function (frame) {
        setConnected(true);
        console.log('Connected: ' + frame);
        stompClient.subscribe('/topic/greetings', function (greeting) {
            showGreeting(JSON.parse(greeting.body).content);
        });
    });
}

以及websocket配置

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

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

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
    registry.addEndpoint("/gs-guide-websocket").withSockJS();
}

}
现在,我想对套接字应用身份验证,以便不是所有客户端都可以连接到服务器。我可能看起来像

var socket = new SockJS('/gs-guide-websocket?token= a JWT token'); //or sth similar

从客户端。
假设我可以对检查前端代码的人隐藏令牌,那么如何从服务器端获取令牌并验证它呢(前提是我已经有了验证jwt的功能)
或者有没有更好的方法来实现套接字连接的安全性?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题