Je suis en train de créer une application Web J2EE qui utilise Oracle SSO avec un backend d'OID comme moyen d'authentification des utilisateurs.Impossible de se déconnecter d'Oracle SSO
Si un utilisateur souhaite utiliser l'application, il doit d'abord fournir un nom d'utilisateur/mot de passe valide sur la page de connexion SSO. Lorsque l'utilisateur a fini d'utiliser l'application, il peut cliquer sur le bouton de déconnexion; dans les coulisses, l'action associée à ce bouton annule la session de l'utilisateur et efface les témoins en utilisant le code Java suivant:
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);
}
}
, j'ai aussi un événement JavaScript onclick associé au bouton de fermeture de session, qui est censé supprimer les cookies d'authentification unique en appelant la fonction delOblixCookie() (que l'on trouve dans certains forum Oracle):
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);
}
}
Cependant, mes utilisateurs ne sont pas automatiquement déconnecté de SSO après avoir frappé le bouton de fermeture de session: bien qu'une nouvelle session est créé si ils essaient d'accéder à la page d'index, la page de connexion SSO ne leur est pas présentée et ils peuvent aller directement à la page principale sans avoir à s'authentifier. Seulement si elles suppriment manuellement les cookies du navigateur, la page de connexion apparaît à nouveau - pas ce dont j'ai besoin: les utilisateurs doivent fournir leur identifiant/mot de passe chaque fois qu'ils se déconnectent de l'application, donc je crois qu'il doit y avoir quelque chose code qui supprime les cookies.
J'apprécierais grandement toute aide avec ce problème, merci d'avance.