如何在Web会话到期时从服务器注销siteminder SSO会话

时间:2014-06-24 15:12:00

标签: java-ee spring-mvc session-timeout siteminder

我们的网络会话需要在2小时内超时,而siteminder SSO会话超时则需要4小时。无论如何,从我的webapp向siteminder发送请求以注销我的SSO会话超时。我尝试过的是在用户登录时捕获webapp会话中的所有siteminder参数(基本上是以SM_开头的任何内容)。然后在HttpSessionListener.sessionDestroyed()方法中,在从会话中添加所有siteminder标头后,我向siteminder logoff.html url发送请求。这种方法似乎没有发生 - 下次我访问网页时,会创建一个新的网络会话,并且siteminder认为我没有注销。

有什么想法吗?

这是我的代码:

public void sessionDestroyed(HttpSessionEvent sessionEvent)
{
    Map<String, String> siteminderHeaders = (Map<String, String>)sessionEvent.getSession().getAttribute("SM_HEADERS");

    if (siteminderHeaders != null){
        RequestCallback requestCallback = new SiteminderLogoutRequestCallback(siteminderHeaders);

        restTemplate.execute("https://mysiteminderhost/siteminderagent/ssologout/Logout.html", HttpMethod.GET, requestCallback, null);
    }
}

1 个答案:

答案 0 :(得分:0)

因此,如果我理解正确,用户将登录SiteMinder(从而接收SMSESSION cookie),然后访问受SM Web Agent实例保护的应用程序(因为您可以阅读WA设置的SM_HEADERS)并且您希望在应用程序达到超时(2小时)时将用户注销,而SM超时为4小时?

由于SM会话信息存储在SMSESSION cookie中,为什么不让您的代码手动设置SMSESSION cookie值(set-cookie)为&#34; LOGGEDOFF&#34;?或者,如果您只是将浏览器重定向到SM特定的logout.fcc页面,SM将处理其余的IIRC。