#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. Итак, в чем именно заключается исправление? У меня такая же проблема.