繁体   English   中英

如何使用 SockJs 通过 STOMP Java 客户端对 Spring 非 Web 套接字进行身份验证?

[英]How authenticate a Spring non-web Websocket over STOMP Java client using SockJs?

如何使用 SockJs 通过 STOMP Java 客户端对 Spring 非 Web 套接字进行身份验证?

基于会话的身份验证? 基于令牌的身份验证?

文档说:

现有的 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());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM