[英]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 連接的頁面本身可能受到保護,因此在實際握手時,用戶應該已經通過身份驗證。
實際上,我無需身份驗證即可連接,並且正在發送消息。 我的 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.