如何在STOMP Java客户端上使用SockJs验证Spring非web Websocket ?
基于会话的身份验证?基于令牌的身份验证?
文档说:
现有Web应用程序已经使用基于HTTP的身份验证。例如
Spring Security可以像往常一样保护应用程序的HTTP url。由于WebSocket会话以HTTP握手开始,这意味着映射到STOMP/WebSocket的url已经被自动保护需要身份验证。此外,打开WebSocket的页面连接本身可能是受保护的,所以到实际的时候握手,用户应该已经通过身份验证。
http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/websocket-stomp-authentication
实际上我连接没有身份验证,我正在发送消息。我的Java服务器应用程序使用Spring框架,但我的客户端是Java客户端,而不是web客户端。
官方文件说:
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());