Как сделать SLO из приложения без файлов cookie в PingFederate? - PullRequest
1 голос
/ 24 ноября 2011

Я пытаюсь SLO, используя PingFederate.Одно из приложений SP настроено на использование сеанса без файлов cookie.Это приложение SP в PingFederate имеет URL-адрес выхода, например, 'http://site/logout.aspx',, но когда запускается процесс SLO, PingFederate успешно перенаправляет браузер на этот URL-адрес, однако на совершенно другой сеанс, чем тот, который был создан, когда SSOпервый сделал.Как настроить PingFederate для перенаправления на страницу выхода SP, повторно используя сеанс, созданный в процессе единого входа?

Изменить: Извините, я забыл упомянуть кое-что.На самом деле приложения IdP и SP разработаны в ASP.NET, и под cookie-файлами я имею в виду, что приложение SP имеет в своем файле web.config следующую конфигурацию состояния сеанса

    <sessionState mode="InProc" cookieless="UseUri" regenerateExpiredSessionId="true" timeout="60" stateNetworkTimeout="30" />

Эта конфигурация sessionState создает URL-адресвыглядят как 'http://site(S(pvvofbemnrmaixo2emaaeo0t))/Home.aspx',, и для единого входа это нормально, так как при вызове' 1008 * создается новый сеанс, поэтому вместо URL-адреса добавляется "(S (бла-бла))", однако, когда URL-адрес выхода SP из системы(http://site/logout.aspx) вызывается процессом SLO, генерируется новый сеанс для сайта SP (отличный от того, который первоначально был создан SSO). Следовательно, исходный сеанс сайта SP не заканчивается.

1 Ответ

1 голос
/ 25 ноября 2011

Когда вы говорите «настроен на использование сеанса без файлов cookie» - вы имеете в виду, что само приложение не использует файлы cookie для поддержания состояния? Если это так, то как поддерживается сеанс - путем перезаписи URL?

Я предполагаю, что вы входите в приложение через комплект интеграции Ping Identity (например, интеграция с открытым токеном). В Java Integration Kit (например) приведен следующий пример кода для выполнения SLO в интегрированном приложении SP:

request.getSession().invalidate();
String returnUrl = “https://<PingFederate DNS>:9031” + request.getParameter(“resume”);
response.sendRedirect(returnUrl);

, который действительно зависит от управления сеансом в приложении J2EE. Если это новая точка входа в приложение (как это может быть для SLO, инициированное IdP), то вам, вероятно, потребуются файлы cookie для сохранения этой информации о состоянии.

Разве в коде интеграции вашего приложения SP невозможно сохранить некоторую информацию о сеансе в файле cookie, чтобы впоследствии вы могли ее аннулировать? В противном случае довольно сложно добиться SLO. Это не столько вопрос PingFederate, сколько вопрос о том, как вы поддерживаете пользовательское состояние в вашем приложении, когда пользователь обращается к нему напрямую, и они уже вошли в систему.

...