no Proxy, просто веб -приложение с использованием EXTJS и PHP на APACHE2 с MOD_AUTH_OPENID. < /p>
Проблема - что -то, что я не думал, было бы так сложно - выходил из строя ... < /p>
Я прочитал много документации и примеров по этому вопросу, многие из них получают Старый, я чувствую, что все перепробовал, и я до сих пор не понимаю ожидаемого поведения. Итак, я ищу помощь.
Я попытался удалить/очистить файлы cookie, но он, похоже, не работает с файлами cookie -keycloak (пробована в JS и PHP).
Код: Выделить всё
document.cookie.split(";").forEach(cookie => {
document.cookie = cookie.replace(/^ +/, "").replace(/=.*/, "=;expires=Thu, 01 Jan 1970 00:00:00 UTC;path=/");
});
foreach($_COOKIE as $name => $value) {
setcookie($name, '', time()-3600, '/');
}
header("Location: /");
"https://1.1.1.1/realms/dev/protocol/ope ... ect/logout" /p>
Я видел какой -то пример с /auth /, но, кажется, является амортизированным методом? Вручную через мой браузер или в моем PHP, с параметрами или без него, он не выходит из пользователя. >
Код: Выделить всё
$realm = "dev";
$keycloak_base_url = "https://1.1.1.1:8443";
$redirect_uri = "https://1.1.1.1/app/";
$client_id = "mySuperclient";
$client_secret = "mySuperSecret";
$refresh_token = $_SERVER['OIDC_refresh_token'];
$access_token = $_SERVER['OIDC_access_token'];
$logout_url = "$keycloak_base_url/realms/$realm/protocol/openid-connect/logout";
$data = [
#'Authorization' => $access_token,
'client_id' => $client_id,
#'redirect_uri' => $redirect_uri,
'refresh_token' => $refresh_token,
#'client_secret' => $client_secret,
#'id_token_hint' => $access_token
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $logout_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_error = curl_error($ch);
curl_close($ch);
if ($http_code === 204) {
echo "Successful! Redirecting...";
header("Location: /app/");
exit();
} else {
echo "Failed! HTTP Code: $http_code
";
echo "
" . htmlspecialchars($response) . "
";
}
< /code>
ОС: Debian 12.9
PHP версия: 8.2.26
keycloak: 26.1.0 (установка голого металла)
mod-auth-openidc: 2.4 .12.31 part ... < /p>
Заранее спасибо за любую помощь < /p>
edit1: использование заголовка ("Местоположение: $ logout_url"); Подробнее здесь: https://stackoverflow.com/questions/794 ... oak-logout
Мобильная версия