簡體   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