2009-11-03 7 views
4

사용자 인증을위한 수단으로 OID 백엔드가있는 Oracle SSO를 사용하는 J2EE 웹 응용 프로그램을 구축하고 있습니다.Oracle SSO에서 로그 아웃 할 수 없음

사용자가 응용 프로그램을 사용하려면 먼저 SSO의 로그인 페이지에서 유효한 로그인/암호를 제공해야합니다.

사용자가 응용 프로그램을 사용하여 끝나면 로그 아웃 버튼을 클릭 할 수 있습니다. 무대 뒤에서,이 버튼과 관련된 작업은 사용자의 세션을 무효화하고 다음 Java 코드를 사용하여 쿠키를 지 웁니다 또한

private void clearCookies(HttpServletResponse res, HttpServletRequest req) { 
    res.setContentType("text/html"); 
    for (Cookie cookie : req.getCookies()) { 
     cookie.setMaxAge(0); 
     cookie.setPath("/"); 
     cookie.setDomain(req.getHeader("host")); 
     res.addCookie(cookie); 
    } 
} 

, I가 예상되는 로그 아웃 버튼과 관련된 온 클릭 자바 스크립트 이벤트를이를

그러나
function delCookie(name, path, domain) { 
    var today = new Date(); 
    // minus 2 days 
    var deleteDate = new Date(today.getTime() - 48 * 60 * 60 * 1000); 
    var cookie = name + "=" 
    + ((path == null) ? "" : "; path=" + path) 
    + ((domain == null) ? "" : "; domain=" + domain) 
    + "; expires=" + deleteDate; 
    document.cookie = cookie; 
} 

function delOblixCookie() { 
    // set focus to ok button 
    var isNetscape = (document.layers); 
    if (isNetscape == false || navigator.appVersion.charAt(0) >= 5) { 
    for (var i=0; i<document.links.length; i++) { 
     if (document.links.href == "javascript:top.close()") { 
     document.links.focus(); 
     break; 
     } 
    } 
    } 
    delCookie('ObTEMC', '/'); 
    delCookie('ObSSOCookie', '/'); 

    // in case cookieDomain is configured delete same cookie to all subdomains 
    var subdomain; 
    var domain = new String(document.domain); 
    var index = domain.indexOf("."); 
    while (index > 0) { 
    subdomain = domain.substring(index, domain.length); 
    if (subdomain.indexOf(".", 1) > 0) { 
     delCookie('ObTEMC', '/', subdomain); 
     delCookie('ObSSOCookie', '/', subdomain); 
    } 
    domain = subdomain; 
    index = domain.indexOf(".", 1); 
    } 
} 

, 내 사용자가 SSO에서 로그 아웃되지 않아요가 로그 아웃 버튼을 누르 후 : 새로운 세션이 있지만 (일부 오라클 포럼에서 발견되는대로) delOblixCookie() 함수를 호출하여 SSO 쿠키를 삭제 그들이 인덱스 페이지에 액세스하려고 시도 할 때 만들어지면 SSO 로그인 페이지가 나타나지 않고 곧바로 갈 수 있습니다 인증하지 않고도 메인 페이지로 이동할 수 있습니다. 브라우저에서 쿠키를 수동으로 삭제 한 경우에만 로그인 페이지가 다시 표시됩니다. 사용자가 응용 프로그램에서 로그 아웃 할 때마다 사용자가 로그인/암호를 제공해야하므로 사용자가 로그인해야합니다. 쿠키를 삭제하는 코드

이 문제에 대한 도움을 주시면 감사하겠습니다. 미리 감사드립니다.

답변

3

Oracle에는 Oracle Access Manager와 Oracle Single Sign On의 두 가지 웹 SSO 제품이 있습니다. 게시 한 Javascript 코드는 Access Manager 용이므로 도움이되지 않습니다. 게다가 사용자를 로그 아웃하기 위해 Javascript에서 아무 것도 할 필요가 없습니다.

OSSO 문서의 logout 섹션을 살펴보십시오.

// Clear application session, if any 
String l_return_url := return url to your application 
response.setHeader("Osso-Return-Url", l_return_url); 
response.sendError(470, "Oracle SSO"); 
0

쿠키가 브라우저를 닫을 때까지 "삭제"되지 않습니다.

1

당신은 로그 아웃의 이름으로, 페이지를 필요로하는 자바 스크립트 기능을 포함 : 그것은 다음과 같은 코드를 사용하는 것이 좋습니다.

입니다 그 documentation는 말씀 : 그것은 포함하는 URL받을 때

웹 게이트는 사용자 로그 아웃 "로그 아웃을." ("."포함). logout.gif 및 logout.jpg 예외 (예 : logout.html 또는 logout.pl). WebGate 이이 문자열로 URL을 수신하면 ObSSOCookie의 값은 이 "로그 아웃"으로 설정됩니다.