Как отключить сеанс скрытого выхода из системы?

#session #cookies #logout #keycloak

#сессия #файлы cookie #Выход #маскировка ключей #сеанс #keycloak

Вопрос:

У меня есть конфигурация, в которой я использую Keycloak в качестве посредника идентификации и пользовательского поставщика удостоверений (с использованием Spring Security OAuth) для предоставления информации о пользователе.

Что я наблюдаю, так это то, что когда я пытаюсь выйти из системы (используя поток frontchannel), включая cookies с помощью Keycloak KEYCLOAK_IDENTITY сохраняются. Я ожидаю увидеть Set-Cookie заголовки, устанавливающие expires на некоторую дату в прошлом.

Следствием этого является то, что если я затем перейду к защищенной конечной точке / странице, я смогу получить доступ к этому ресурсу без повторного входа в систему. Keycloak считывает значение idToken из KEYCLOAK_IDENTITY файла cookie и использует его для повторной аутентификации пользователя.

Как мне настроить Keycloak для полного выхода пользователя из системы?

Ответ №1:

При создании ссылки для выхода, которую будет использовать интерфейс, параметр ‘redirectUri’ должен соответствовать тому, что настроено в Keycloak для Клиента как «URL для выхода из внешнего канала». Обратите внимание, что по умолчанию используется «Базовый URL», если он явно не задан в конфигурации клиента.

Хотя вы можете перенаправить в другое место после выхода из системы, если эти значения не совпадают, Keycloak не удалит cookies!

Ответ №2:

Решение скрыто в исходном коде Keycloak:

  • Если я укажу URL-адрес для выхода из системы в конфигурации моего поставщика удостоверений, Keycloak не отменит установку своих собственных файлов cookie. Ссылка: OIDCIdentityProvider.keycloakInitiatedBrowserLogout() . Этот метод должен возвращать значение null для того, чтобы Keycloak отключил свои файлы cookie.

Комментарии:

1. Итак, в чем именно заключается исправление? У меня такая же проблема.