Проблема с Keycloak и выходом из системы идентификации SAML
У меня проблема с конфигурацией Keycloak и единым выходом из системы SAML Identity Provider.
Сценарий:
- Пользователь пытается войти в систему поставщика услуг, используя клиент Keycloak (OID)
- KC перенаправляет поставщику удостоверений SAML
- После ввода правильных учетных данных пользователь вошел в систему, KC создает сеанс, и пользователь перенаправляется обратно на страницу SP
- На другой вкладке пользователь напрямую входит в IP (учетные данные не требуются из-за SSO)
- Пользователь выходит из SP
- После обновления 2-й вкладки (IP) пользователь выходит из системы.
Однако, если пользователь сначала выходит из системы с IP-адреса, сеанс SP не закрывается, а пользователь все еще находится в системе:
- Пользователь выходит из системы с IP (перенаправление на конечную точку KC и возврат на страницу входа по IP)
- После обновления пользователь по-прежнему находится в SP
Keycloak правильно принимает запрос samlp:LogoutRequest и возвращает
В консоли администратора KC я все еще вижу активный сеанс для данного клиента (и пользователя). На самом деле я вижу запрос на выход SAML с IP только в KC stdout (фильтр запроса-дампа), но в KC не произошло никакого события выхода из системы.
Я действительно не понимаю в деталях, как работает SAML, но не должен ли пользователь выходить из SP с помощью SLO? Или, может быть, мне что-то не хватает в конфигурации KC client/realm/IP? Спасибо за вашу помощь / объяснение
1 ответ
Требования для работы Global Logout
- Клиенты, которые используются обоими поставщиками услуг, должны находиться в одной области.
- Когда вы выходите из системы IdP, видите ли вы, что каждый поставщик услуг запускает запрос на выход из системы? Я считаю, что в вашем случае он не вызывает URL-адрес выхода для вашего SP. Это необходимо настроить на уровне клиента.
- Если вызывается URL выхода для SP, и даже если вы вошли в свой SP, это означает, что у SP есть некоторые проблемы при реализации выхода.
Когда вы сначала выходите из SP, в этом случае ваш SP отправляет запрос на выход в IdP, и поэтому вы выходите из системы как из IdP, так и из SP. Но в другом случае я считаю, что URL-адрес выхода из системы не вызывается (что может быть связано с отсутствием конфигурации в клиенте).
Можете ли вы опубликовать снимок экрана с конфигурацией, чтобы помочь вам лучше?