2014-06-24 5 views
0

우리 웹 세션은 2 시간 내에 시간 초과해야하며 siteminder SSO 세션 시간 초과는 4 시간과 같아야합니다. 내 SSH 세션 시간 초과를 로그 오프하기 위해 webapp에서 siteminder에 요청을 보내는 방법이 있습니까? 내가 시도한 것은 사용자 로그인시 (기본적으로 SM_으로 시작하는 모든 것) 내 웹 응용 프로그램 세션의 모든 siteminder 매개 변수를 캡처하는 것입니다. 그런 다음 HttpSessionListener.sessionDestroyed() 메소드에서 세션의 모든 siteminder 헤더를 추가 한 후 siteminder logoff.html url에 요청을 보냅니다. 이 접근법으로는 아무 일도 일어나지 않습니다. 다음에 웹 페이지에 액세스하면 새 웹 세션이 만들어지고 siteminder는 내가 로그 아웃했다고 생각하지 않습니다.내 웹 세션이 만료 될 때 서버에서 siteminer SSO 세션을 로그 아웃하려면 어떻게해야합니까?

아이디어가 있으십니까? 나는이 상황을 제대로 이해한다면 사용자는 SM 웹 에이전트 인스턴스에 의해 보호되는 응용 프로그램에 액세스하는 다음 (하여 SMSESSION 쿠키를 수신) 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

: 여기

내 코드입니다 (당신은 WA가 설정 한 SM_HEADERS를 읽을 수 있기 때문에) SM 타임 아웃이 4 시간 동안 애플리케이션이 타임 아웃 (2 시간)에 도달하면 사용자를 로그 아웃하고 싶습니까?

SM 세션 정보가 SMSESSION 쿠키에 저장되므로 SMSESSION 쿠키 값을 수동으로 (set-cookie) "LOGGEDOFF"로 설정하는 것이 좋습니다. 또는 브라우저를 SM 특정 logout.fcc 페이지로 리디렉션하면 SM이 나머지 IIRC를 처리합니다.

+0

원래 SM 요청 페이지로 리디렉션하려고하는 다른 요청이 들어올 때까지 세션 시간 초과 후 대기를 시도했습니다. 문제는 세션이 없으면 요청이 SSO 로그인 이후인지 또는 세션이 만료 된 후 발생하는 일반적인 요청인지 여부를 알 수 없다는 것입니다. 나는 SM 헤더가 같은 방법이기 때문에 그 시나리오의 차이점을 알 수있는 방법을 알고있다. 이것이 로그인 시도 후에 온 것을 나타내는 SM 헤더가없는 한. – user1531567