【发布时间】:2014-06-24 15:12:00
【问题描述】:
我们的网络会话需要在 2 小时内超时,而站点管理员 SSO 会话超时大约是 4 小时。无论如何要从我的 web 应用程序向 siteminder 发送请求以注销我的 SSO 会话超时。我尝试的是在用户登录时捕获我的 webapp 会话中的所有 siteminder 参数(基本上任何以 SM_ 开头的东西)。然后在 HttpSessionListener.sessionDestroyed() 方法中,在添加来自会话的所有站点管理器标头后,我向我们的站点管理器 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);
}
}
【问题讨论】:
标签: jakarta-ee spring-mvc session-timeout siteminder