Spring Security Logout和独立应用程序

时间:2013-01-06 10:32:00

标签: java spring-security logout

我有一个使用基本身份验证通过Spring Security保护的SOAP Web服务。

我编写了一个访问此Web服务的Swing应用程序。应用程序启动时,会出现一个登录对话框,用户输入其凭据。当用户单击“登录”按钮时,将使用给定的凭据创建JAXWS客户端。我还想让登录用户注销。 Spring Security需要访问URL才能注销。这在独立应用程序中如何工作?应该通过CXF还是使用简单的HTTP客户端来完成?

3 个答案:

答案 0 :(得分:1)

完全避免会话并让您的JAXClient在每个conn请求上重新进行身份验证。使用可从Spring Security 3.1获得的stateless配置secuity.xml。

答案 1 :(得分:0)

如何实现这一点并不重要。唯一的要求是创建HTTP GET以注销URL,但您的请求应包含会话的会话ID。否则Spring无法知道哪个会话无效。因此,我认为最简单的方法是使用您当前使用的同一客户端。

答案 2 :(得分:0)

好吧,我不会争论有状态和无国籍。如果您需要从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);
相关问题