簡體   English   中英

Spring Security注銷和獨立應用程序

[英]Spring Security Logout and standalone application

我有一個使用基本身份驗證由Spring Security保護的SOAP Web服務。

我已經編寫了訪問該Web服務的Swing應用程序。 當應用程序啟動時,將出現一個登錄對話框,用戶可以在其中輸入其憑據。 當用戶單擊“登錄”按鈕時,將使用給定的憑據創建JAXWS客戶端。 我也想給登錄用戶注銷的可能性。 Spring Security需要訪問URL才能注銷。 在獨立的應用程序中如何工作? 應該通過CXF還是使用簡單的HTTP客戶端完成此操作?

完全避免會話,並讓您的JAXClient在每個conn請求上重新進行身份驗證。 使用Spring Security 3.1提供的stateless配置secuity.xml。

您如何實現此無關緊要。 唯一的要求是創建HTTP GET以注銷URL,但您的請求應包含會話的會話ID。 否則,Spring無法知道哪個會話將失效。 因此,我認為對您來說最簡單的方法是使用當前正在使用的同一客戶端。

好吧,我不會爭論有狀態與無狀態。 如果您需要從Swing應用程序注銷,只需向配置的注銷URL發送HTTP GET請求,並發送會話ID。 您甚至不需要Apache HttpClient:

String url = "http://example.com/logout";
String charset = "UTF-8";
String session = ";jsessionid=" + sessionId;
URLConnection connection = new URL(url + session).openConnection();
connection.setRequestProperty("Accept-Charset", charset);
InputStream response = connection.getInputStream();
// ...

有關詳細信息,請參見https://stackoverflow.com/a/2793153/131929 (提出HTTP GET請求)。

您可以如上所述將會話ID直接附加到URL上,也可以將其作為常規Cookie標頭發送,如下所示:

connection.addRequestProperty("Cookie", "JSESSIONID=" + sessionId);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM