Страница Ping Federate Grant Management не выходит из системы с глобальной конечной точкой адаптера htmlform

Я использую Pingfederate с OpenID Connect. И у меня возникла проблема при выходе со страницы управления грантами.

Я настроил мои параметры состояния сеанса адаптера idp как глобальные. Так что, если я использую одну из этих конечных точек выхода из системы, я успешно выйду из всех других RP.

И после выхода из системы, если я пытаюсь получить страницу управления грантами через эту конечную точку ~ / as / grants.oauth2, запрашивается страница входа, поэтому SLO работает нормально. Но когда я перехожу на другую конечную точку ~ ~ as / oauth_access_grants.ping, я могу получить страницу без входа в систему. Итак, у вас есть идея, почему глобальная конечная точка выхода из htmlformidpadapter не выходит из этой конечной точки и выходит из системы? с другой конечной точки?

Я использую конечную точку, которая определена на адаптере.

У меня есть иерархические адаптеры. Родительский адаптер содержит глобальные настройки и устанавливается по умолчанию. Дети также принимают глобальные настройки в своих настройках сеанса.

Поэтому, когда я вызываю одну из конечных точек этих адаптеров (те, которые имеют общие настройки), все мои сеансы с глобальными настройками удаляются из карты сеансов. Так что происходит своего рода избирательное SLO.

Я проверил журналы сервера, каждый глобально настроенный адаптер добавляет свои сеансы в карту состояний как HtmlFormIdpAuthnAdapter: SESSION.

org.sourceid.saml20.service.impl.localmemory.InterReqStateMgmtMapImpl] getAttr(ключ: GEZIxxzzgrJ1Wq0vFoSY09, имя: HtmlFormIdpAuthnAdapter:SESSION

Даже страница управления грантами.( ~/ As/grants.oauth2). Но другая конечная точка управления грантами помещает свой сеанс на карту состояний как name: attrs и name: csrfToken.

[org.sourceid.saml20. localmemory.InterReqStateMgmtMapImpl] getAttr(ключ: GEZIxxzzgrJ1Wq0vFoSY09, имя: csrfToken)

Таким образом, в основном, когда я отменяю сеанс через конечную точку адаптера, он удаляет все значения HtmlFormIdpAuthnAdapter: SESSION.

removeAttr (ключ: GEZIxxzzgrJ1Wq0vFoSY09, имя: HtmlFormIdpAuthnAdapter:SESSION) 2016-02-18 08:27:35,407 DEBUG [com.pingidentity.jgroups.MuxInvocationHandler] вызов атрибута removeA ttr для размера mapmMg 2016 года: атрибуты 18 08:27:35,409 tid:b4ryqAPIEA6R0ywXzVmC6XtykHc DEBUG [org.sourceid.saml20.service.impl.grou prpc.InterRequestStateMgmtGroupRpcImpl] вызвал режим:GET_MAJORITY removeAttr 0.076.12: 00.12: 00.12 (00.12): 10.12 (00.12): 00.12 (00.12): 00.12 (06.12) [00.12] (06.12) [00.12] [00.12]] (10.12) []

Но те, которые добавлены https://localhost:9031/as/oauth_access_grants.ping, все еще остаются. Таким образом, я могу получить страницу управления грантами с этой конечной точки, но другой конечной точке требуется логин.

И я также попробовал конечную точку выхода из системы idp/startSLO.ping.

Он работает и отзывает всю сессию (даже последнюю) ТОЛЬКО если я получаю токен доступа на этой сессии.

В противном случае, если я захожу на страницу управления грантами напрямую и вызываю idp/startSLO.ping, я получаю сообщение об ошибке от сервера.

* ### Server1 ### 2016-02-18 08:31:34,705 tid: b4ryqAPIEA6R0ywXzVmC6XtykHc DEBUG [org.sourceid.websso.servlet.IntegrationControllerServlet] GET: https://localhost:9031/idp/startSLO.ping. 02-18 08:31:34,705 tid:b4ryqAPIEA6R0ywXzVmC6XtykHc DEBUG [org.sourceid.saml20.service.impl.grouprpc.PreferredNodes] [] -> индексы по адресам -> [10.0.12.90:7600, 10.0.12.126:76] 2016-02-18 08:31:34,708 DEBUG [org.sourceid.saml20.service.impl.localmemory.IdpSessionRegistryMapImpl] getRegistered(3AeDfSHVS1F0JU4nwgLsPJ) обнаружил нулевые автономные компоненты 2016-02-18 08:31: группа 29 августа..MuxInvocationHandler] вызов getRegistered для org.sourceid.saml20.service.impl.localmemory.IdpSessionRegistryMapImpl@e599115 {bean-> sessionLists = 0, assertionId-> bean = 0, pfsessionid->} beanSet = 6: 31:34,708 tid: b4ryqAPIEA6R0ywXzVmC6XtykHc DEBUG [org.sourceid.saml20.service.impl.grouprpc.IdpSessionRegistryGroupRpcImpl] вызвал режим:GET_MAJORITY getRegistered() в [10.0.0.1276] 7600] 2016-02-18 08:31:34,709 tid:b4ryqAPIEA6R0ywXzVmC6XtykHc DEBUG [org.sourceid.saml20.bindings.BindingServiceImpl] Не переносить сообщение с запросом протокола, поскольку HTTP-ответ был принят (это нормальное условие, обычно из-за адаптера или другой компонент, перенаправляющий пользователя или записывающий его собственный контент в ответ).

SErver2 2016-02-18 08:31:34,706 DEBUG [org.sourceid.saml20.service.impl.localmemory.IdpSessionRegistryMapImpl] getRegistered (3AeDfSHVS1F0JU4nwgLsPJ) обнаружил нулевые автономные компоненты 2016-02-18 08:34: 31:34: 31:34:.jgroups.MuxInvocationHandler] вызов getRegistered в org.sourceid.saml20.service.impl.localmemory.IdpSessionRegistryMapImpl@dec9571{bean->sessionLists=0, assertionId->bean=0, pfsessionid->bean

И TRACK USER SESSIONS FOR LOGOUT и REVOKE USER SESSION ON LOGOUT также включены.

По сути, мне нужно найти способ заставить мою страницу управления грантами использовать только адаптер defaulthtmlform idp.

1 ответ

Я предполагаю, что вы используете /idp/startSLO.ping для выхода из системы? (а не определенная конечная точка выхода только на адаптере?)

Я верю, что смог воспроизвести то, что вы видите. Я подозреваю, что в настройках сервера авторизации OAuth (включена часть механизма асинхронного выхода на передний канал ( документация)) включена опция "ОТСЛЕЖИВАТЬ СЕССИИ ПОЛЬЗОВАТЕЛЯ ДЛЯ ЛОГОТИПА", но у вас нет "ОТВЕТИТЬ СЕССИЯ ПОЛЬЗОВАТЕЛЯ НА ЛОГАУТ" (часть нашего сервера) боковое отслеживание).

Попробуйте включить "ОТМЕНИТЬ СЕССИЮ ПОЛЬЗОВАТЕЛЯ НА ВЫХОДЕ" и посмотрите, решит ли это проблему.

Другие вопросы по тегам