如何使用SockJs在STOMP Java客户端上对Spring非Web Websocket进行身份验证?

时间:2016-09-10 00:16:38

标签: java spring websocket sockjs

如何使用SockJs在STOMP Java客户端上对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客户端。

1 个答案:

答案 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());