我们的网络会话需要在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);
}
}
答案 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。