Невозможно удалить файлы cookie SMSESSION, PHPSESSID, в Siteminder

Я реализовал Siteminder SSO Login. Все работает нормально, но я не могу удалить файлы cookie SMSESSION и PHPSESSID. Я прочитал другие вопросы и попробовал код, но все безрезультатно. Код, который я использую в настоящее время:

        <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Expires" CONTENT="-1">
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script>
<script language="JavaScript">
function delCookie() {
alert("inside delete cookie");
var expireNow = new Date();
document.cookie = "SMSESSION=; expires=Thu, 01-Jan-70 00:00:01 GMT; domain=.<domain>.<com>; path=/";
document.cookie = "SMTRYNO=0; domain=.<domain>.<com>; path=/";
document.cookie = "JSESSIONID=; domain=.<domain>.<com>; path=/";
document.cookie = "sapj2ee_*=; domain=.<domain>.<com>; path=/";
document.cookie = "MYSAPSSO2=; path=/";
document.cookie = "SMSESSION=NO; domain=.<domain>.<com>; path=/";
//     alert(document.cookie);
location.href = "http://www.<domain>.<com>";
}
</script>

Любая помощь будет оценена!
PHP-код для удаления куки добавлен ниже:

//remove session vars
session_unset();
// sends as Set-Cookie to invalidate the session cookie
if (isset($_COOKIE[session_name()])) {
$params = session_get_cookie_params();
setcookie(session_name(), '', 1, $params['path'], $params['domain'], $params['secure'], isset($params['httponly']));
}//try for SMSESSION
//$params = session_get_cookie_params();
//setcookie(session_name(), '', 0, $params['path'], $params['domain'], $params['secure'], isset($params['httponly']));

$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach($cookies as $cookie)
{
$mainCookies = explode('=', $cookie);
$name = trim($mainCookies[0]);
setcookie($name, '', 1);
setcookie($name, '', 1, '/');
}// Finally, destroy the session.
session_destroy();

Это удаляет все куки и сеансовые переменные, кроме SMSESSION.

0

Решение

Во-первых, удаление этих файлов cookie — очень плохая идея / практика.

1) Для файла cookie PHPSESSIONID вам просто нужно уничтожить сеанс. Документация Вот

2) SMSESSION обрабатывается веб-агентом SiteMinder, установленным на вашем сервере приложений. Вы не должны связываться с этим. Если вы хотите уничтожить сеанс SiteMinder, просто перенаправьте пользователя на URL выхода из вашей установки siteminder.

1

Другие решения

Я не думаю, что это хорошая идея, чтобы удалить флаг HttpOnly из cookie. Флаг гарантирует, что сценарии на странице не могут прочитать cookie. Это очень плохая идея, чтобы Javascript удалял cookie-файл SMSESSION, и вам также не следует использовать JS при выходе из системы.

Причина, по которой вы не можете удалить cookie с сервера, может быть связана с доменом cookie. Если вы используете инструмент для отслеживания запроса, вы сможете увидеть домен файла cookie SMSESSION в запросе и ответе. Если домены не совпадают, даже если вы отправляете недействительный заголовок cookie, браузер не удалит cookie. Обычно для доменного имени a.b.c файл cookie приложения (сеанс PHP и т. Д.) Сопоставляется с файлом a.b.c, а файлы cookie SiteMinder сопоставляются с доменом b.c.

1

Установлены ли файлы cookie для HttpOnly. В этом случае Javascript не сможет изменить / удалить файлы cookie. Чтобы проверить, являются ли файлы cookie HttpOnly, одним из более простых способов было бы проверить состояние файлов cookie в представлении «Файлы cookie» Firebug.

Вы также можете создать страницу сервера в PHP и удалить куки на этой странице. Когда страница вызывается, сервер отвечает заголовками Set-Cookie, которые устанавливают допустимость cookie на -1.

Не рекомендуется использовать JavaScript для очистки файлов cookie сеанса, поскольку логика отправляется в браузер, а не на сервер.

Если вы пытаетесь выйти из SiteMinder, вы также можете посмотреть на использование параметра logoffuri в ACO, который указывает ресурс, который является URL-адресом выхода SM. Обратите внимание, что при обращении к ресурсу значение cookie-файла SMSESSION устанавливается равным LOGGEDOFF, но другие файлы cookie сеанса приложения, такие как PHPSESSID и т. Д., Не будут удалены.

Надеюсь это поможет
Avi

0
По вопросам рекламы [email protected]