如何使用SockJs在STOMP Java客户端上对Spring非Web Websocket进行身份验证?
基于会话的身份验证?基于令牌的身份验证?
文件说:
现有的Web应用程序已经使用基于HTTP的身份验证。例如
Spring Security可以像往常一样保护应用程序的HTTP URL。 由于WebSocket会话以HTTP握手开始,这意味着 映射到STOMP / WebSocket的URL已自动受到保护 要求认证。此外,打开WebSocket的页面 连接本身可能受到保护,因此到实际时间 握手,用户应该已经过身份验证。
实际上我没有身份验证连接而且我正在发送消息。我的Java服务器应用程序使用Spring框架,但我的客户端是Java客户端,而不是Web客户端。
答案 0 :(得分:1)
官方文件说:
String url = "ws://127.0.0.1:8080/endpoint";
StompSessionHandler sessionHandler = new MyStompSessionHandler();
stompClient.connect(url, sessionHandler);
但是还有其他连接方法与附加参数WebSocketHttpHeaders。我用它进行基本授权:
WebSocketHttpHeaders headers = new WebSocketHttpHeaders();
String auth = "user" + ":" + "password";
headers.add("Authorization", "Basic " + new String(Base64.getEncoder().encode(auth.getBytes())));
stompClient.connect(url, headers, new MyStompSessionHandler());