繁体   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